我有一个在 ec2 m3 实例上运行的应用程序,以及一个在 dRDS 实例上运行的 mysql。它们都位于同一区域、VPC 中,尽管它们似乎位于不同的可用区中。
问题是,查询运行速度非常慢 - 我说的是延迟时间超过 700 毫秒到超过一秒。我怀疑延迟是由于连接到 RDS 服务器造成的,但我不太确定。
我到底该怎么做才能完全减少/消除这种延迟。在我的本地主机上,相同的查询最多只需不到四分之一到半毫秒。我在非高峰时段检查过,几乎没有流量,甚至在本地主机上转储了实时数据。因此,问题不可能与流量大或数据量大有关。
==编辑===
以下是 RDS 实例的规格:
实例和 IOPS
实例类:db.m3.medium
存储类型:预配置 IOPS (SSD)
IOPS:1000 存储:100 GB
答案1
跨可用区延迟应该很低(例如低于 25ms)
如果您的应用程序查询是串行的而不是并行的,那么它将需要跨可用区的往返时间(该时间将是系列的累积时间)。
我将在与 RDS 实例相同的 AZ 中创建一个 ec2 机器,并在 ec2 实例之间使用 ping 来计算基本延迟。
然后,您可以尝试在同一个可用区中运行您的应用程序,并对应用程序性能进行基准测试(是否相同、是否更好、是否更差)。从逻辑上讲,性能应该会有所提高。