我们在 sa-east-1 区域使用 RDS MySQL 5.6 实例 (db.m3.2xlarge),在写入密集型操作期间,我们看到(在 CloudWatch 上)我们的写入吞吐量和网络传输吞吐量都被限制在60MB/秒。
我们怀疑多可用区可能是造成此行为的原因,并出于测试目的将其关闭。我们进行了相同的操作,现在注意到写入吞吐量不再受限,网络传输吞吐量实际上为零。这强化了这种网络流量位于多可用区设置中的主实例和故障转移实例之间的想法。
这是 Cloudwatch 图表,显示了没有多可用区的操作和启用多可用区后的相同操作:
我们尝试将实例升级到具有最高网络性能的实例并配置了 IOP,但没有任何变化,当多可用区开启时,我们的写入速度始终上限为 60MB/s。
据我们了解,多可用区使用同步数据复制,但我们无法找到有关发生此复制的链接的带宽限制的任何信息。有谁知道这件事以及如何避免这个限制?还是我们应该忍受它?
最佳答案
我认为您本身没有看到复制服务的限制,但看起来您的复制带宽与实例上的 EBS 卷共享相同的传输,因此它是实例本身可用的以太网带宽限制(记住 EBS 是网络附加存储)。
m3.2xlarge 上的网络连接是 1000 Mbit/s,相当于 125 MiB/s。
将该数字除以二,您将获得约 60 MB/s 的写入本地实例的 EBS 卷和另外约 60 MB/s 的写入同步副本。
不幸的是,多可用区复制的实现细节并不是 AWS 公开解释的足够详细的内容,因此无法得出结论说这确实是解释,但如果它是正确的,这些数字令人怀疑地接近预测。
m3 系列和 m4 系列实例具有相似的规范,但(显然)也存在一些基本的设计差异,因此查看 m4.2xlarge 是否具有相同的行为可能会提供信息。
关于mysql - RDS Multi-AZ 瓶颈写入性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47162231/