mysql - RDS Multi-AZ 瓶颈写入性能

标签 mysql amazon-web-services amazon-rds

我们在 sa-east-1 区域使用 RDS MySQL 5.6 实例 (db.m3.2xlarge),在写入密集型操作期间,我们看到(在 CloudWatch 上)我们的写入吞吐量和网络传输吞吐量都被限制在60MB/秒。

我们怀疑多可用区可能是造成此行为的原因,并出于测试目的将其关闭。我们进行了相同的操作,现在注意到写入吞吐量不再受限,网络传输吞吐量实际上为零。这强化了这种网络流量位于多可用区设置中的主实例和故障转移实例之间的想法。

这是 Cloudwatch 图表,显示了没有多可用区的操作和启用多可用区后的相同操作:

RDS Multi-AZ bottlenecking write performance

我们尝试将实例升级到具有最高网络性能的实例并配置了 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/

相关文章:

mysql - 值为数组的原始 sql。 ruby

php - MySql php 获取和插入语法错误

mysql - 当在普通表和从索引表中进行选择之间执行内连接时,索引是否有用

amazon-web-services - 在 CloudFormation 中的多个 LoadBalancer 后面添加实例?

python - 在 EMR 集群上安装 pandas

postgresql - 增加 RDS 中的预配置 IOPS 会导致停机?

amazon-web-services - 有没有比 Amazon 关系数据库服务 (RDS) 成本更低的替代方案?

php 在嵌套 for 循环之外使用变量

amazon-web-services - Boto3:复制存储桶中的对象

amazon-rds - 在本地运行SAM时如何连接RDS实例?