主数据库:Postgres,4个vCPU,16GB RAM,us-west-2a
副本1:Postgres,4个vCPU,16GB RAM,us-west-2a,200G SSD(没有流量,仅用于测试)
副本2:Postgres,4个vCPU,16GB RAM,us-west-2b,200G SSD(没有流量,仅用于测试)
副本3:Postgres,2个vCPU,8GB RAM,us-west-2b,200G SSD(少量流量)
副本4:Postgres,2个vCPU,8GB RAM,us-west-2b,200G SSD(少量流量)
主实例和只读副本之间的延迟超过16秒,没有任何重负载,有时甚至达到30秒。
我花了很多精力来挖掘延迟的根本原因。
以下是一个没有任何流量的副本的CloudWatch报告。
假设一:是否由IO积分引起的?
以下是IO积分的报告,过去六个小时一直是100%,我不认为这是IO问题造成的。
即使我不认为这是由IO引起的,我决定将数据库从GP2升级到具有预置3000 IOPS的IO1。
但是它没有用,延迟仍然存在。
假设二:是否由参数热备引起的?
副本中没有任何流量!这与postgres参数max_standby_streaming_delay
和hot standby
无关。
假设三:是否由网络IO引起的?
流量始终小于1M/s
假设四:是否由应用程序中触发的长时间运行查询引起的?
我创建了两个全新的m5.large PostgreSQL实例来验证这个假设,并使用pgbench进行基准测试。
主:M5.large,具有3000个预留IOPS。
副本:M5.xlarge,具有1000个预留IOPS。
我很惊讶!延迟时间从0到24秒不等。
你可能会问为什么不向AWS提出这个问题?
我在AWS论坛上提出了这个问题,但没有人回答我。
我感到被欺骗了,希望通过你的经验了解复制延迟的真实值。
问题
AWS Amazon Aurora提供了一个估计值(低于100ms)来表示延迟。这是我的基准报告,延迟低于25ms。
当涉及到AWS RDS PostgreSQL时:
有人能告诉我AWS RDS PostgreSQL复制延迟的正常值是多少吗?
AWS RDS PostgreSQL复制延迟的承诺估计值是多少?