EC2 实例连接到不同可用区、同一区域的 RDS 实例的延迟/性能注意事项

EC2 实例连接到不同可用区、同一区域的 RDS 实例的延迟/性能注意事项

这似乎是某个时候有人会广泛测试的事情。具体来说,从同一可用区内的 EC2 实例连接到 RDS PostgreSQL 环境与从同一区域内的不同可用区内的 EC2 实例连接到 RDS PostgreSQL 环境的性能差异是多少?

我的具体情况...

目前,我正在处理多个单租户环境,这些环境在一个可用区中运行 postgres RDS,并且大量应用程序容器分布在该区域的多个可用区中。该应用程序是不对称的,因此某些数据库密集型服务只能在“主”应用程序容器上运行。许多此类环境的主应用程序与数据库运行在不同的可用区中。我正在尝试确定将当前位于不同可用区的数据库从主应用程序移动到同一可用区是否值得承担风险和停机时间。

答案1

通过他们的支持和我们的客户代表与 AWS 的一些人员交谈后,他们会在营销层面告诉你,你应该始终在同一区域的不同可用区之间获得大约 1ms 的延迟。从 Tim 的评论来看,情况似乎并非如此;但我一直主要为我的应用程序使用 us-west-2。

需要注意的是,如果您只使用像 t2 这样的低端实例,您可能会遇到很多抖动,有时还会遇到更大的延迟。

如果实例兼容 ENA(或 SR-IOV)并使用它,您将大大减少实际抖动,并且只要您停留在同一个 VPC 和区域内,就可以实际预期非常低的延迟。

RDS 似乎特别针对网络进行了优化,在我使用它的几年中(us-west-2)我从来没有遇到过与 RDS 实例本身的延迟相关的问题,但这是一个 N=1 数据点。

另外...如果您使用多个实例连接到一个 postgres 服务器,请确保您使用 pgbouncer 或类似的连接池,否则您会在几毫秒的延迟导致问题之前遇到连接问题。

相关内容