我们想在我们的 mongo 机器上使用预配置的 IOPS EBS 卷,我对如何计算要使用的预配置 IOPS 数量有点困惑。
目前我们每个卷的平均 IOPS(读取 + 写入)为 25(我们组合使用 4 个 EBS 卷),我们还看到我们的 CPU 在高峰 IO 时间处于“等待”状态。
我可以把这个问题分成两部分——
- 转移到预配置的 EBS IOPS 后,我们是否会看到平均 IOPS 大幅增加,因为 IO 延迟会减少,我们是否应该采用大的缓冲区来避免超过 IOPS 数量?
- 如何计算你的 mongo 设置的最佳配置 IOPS 数量?
谢谢!
编辑-附上亚马逊的平均队列长度
(我无法粘贴图片所以这里有一个链接)
https://s3-eu-west-1.amazonaws.com/uploads-eu.hipchat.com/13432/91327/Mz2erjjMUcxMmDN/upload.png
答案1
IOStat 数字才是你真正需要衡量影响的,最好是随着时间的推移并与 MongoDB 负载相关(因此我建议彩信与munin 节点插件进行监控)。如果您没有看到 svctime 和队列大小的高延迟(如果看到了,您可能没有空闲 CPU,那么您将看到 IOWait 峰值)。
各种分析得出的普遍共识是:
- 使用 PIOPS 后,延迟会有所改善(这会因工作负载大小和其他因素而异,请参阅例如这里)
- 一般来说,您将获得延迟和吞吐量方面更加一致的性能,尽管这并不总是正确的(与上面的报告相同)
- 但是,如果您没有看到 IO 方面的任何压力,则使用 PIOPS 不太可能看到巨大的差异(除了更一致的性能)
由于您的 IO 似乎不是您的瓶颈(我在这里提供有限的证据/信息)我认为您不会看到比您当前看到的 100 PIOPS 多得多的结果,但您应该拥有更可预测的性能。