AWS RDS PostgreSQL:PostgreSQL复制延迟的承诺值是多少?

7
我有一个主RDS实例和四个副本。
  • 主数据库: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报告。

enter image description here

假设一:是否由IO积分引起的?

以下是IO积分的报告,过去六个小时一直是100%,我不认为这是IO问题造成的。

enter image description here

即使我不认为这是由IO引起的,我决定将数据库从GP2升级到具有预置3000 IOPS的IO1。

但是它没有用,延迟仍然存在。

假设二:是否由参数热备引起的?

副本中没有任何流量!这与postgres参数max_standby_streaming_delayhot standby无关。

假设三:是否由网络IO引起的?

流量始终小于1M/s

假设四:是否由应用程序中触发的长时间运行查询引起的?

我创建了两个全新的m5.large PostgreSQL实例来验证这个假设,并使用pgbench进行基准测试。

  • 主:M5.large,具有3000个预留IOPS。

  • 副本:M5.xlarge,具有1000个预留IOPS。

我很惊讶!延迟时间从0到24秒不等。

enter image description here

你可能会问为什么不向AWS提出这个问题?

我在AWS论坛上提出了这个问题,但没有人回答我。

我感到被欺骗了,希望通过你的经验了解复制延迟的真实值。

问题

AWS Amazon Aurora提供了一个估计值(低于100ms)来表示延迟。这是我的基准报告,延迟低于25ms。

enter image description here

当涉及到AWS RDS PostgreSQL时:

  • 有人能告诉我AWS RDS PostgreSQL复制延迟的正常值是多少吗?

  • AWS RDS PostgreSQL复制延迟的承诺估计值是多少?

1个回答

3
根据RDS文档中的“PostgreSQL读副本限制”

如果源DB实例上没有用户事务发生,则PostgreSQL读副本报告的复制滞后时间最多为五分钟。

当有一个每隔几毫秒就写入数据库的脚本时,你可以检查复制滞后时间吗?这是此答案所建议的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接