如何计算我们的 mongo 服务器所需的 EBS PIOPS?

如何计算我们的 mongo 服务器所需的 EBS PIOPS?

我们想在我们的 mongo 机器上使用预配置的 IOPS EBS 卷,我对如何计算要使用的预配置 IOPS 数量有点困惑。

目前我们每个卷的平均 IOPS(读取 + 写入)为 25(我们组合使用 4 个 EBS 卷),我们还看到我们的 CPU 在高峰 IO 时间处于“等待”状态。

我可以把这个问题分成两部分——

  1. 转移到预配置的 EBS IOPS 后,我们是否会看到平均 IOPS 大幅增加,因为 IO 延迟会减少,我们是否应该采用大的缓冲区来避免超过 IOPS 数量?
  2. 如何计算你的 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 多得多的结果,但您应该拥有更可预测的性能。

相关内容