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

我们希望在我们的mongo机器上使用预configuration的IOPS EBS卷,我对如何计算使用的预configurationIOPS数量感到困惑。

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

我可以把问题分成两部分 –

  1. 我们看到在转移到预configuration的EBS IOPS之后,平均IOPS会有大幅度的增长,因为IO延迟会降低,如果我们采取一个很大的缓冲来避免超过IOPS计数?
  2. 你如何计算你的mongo设置的最佳IOPS数量?

谢谢!

编辑 – 附加从亚马逊的音量平均队列长度

(我不能粘贴图像,所以这里有一个链接)

https://s3-eu-west-1.amazonaws.com/uploads-eu.hipchat.com/13432/91327/Mz2erjjMUcxMmDN/upload.png

IOStat数字是你真正需要衡量这里的影响,最好是随着时间的推移,并与MongoDB的负载(所以我build议彩信与munin-node插件监测)。 如果您在svctime和队列大小上看不到高延迟(如果您的CPU可能没有闲置,则会看到IOWait峰值)。

从各种分析得出的普遍共识是这样的:

  • 使用PIOPS你会得到一些改进的延迟(这将随着工作负载的大小和其他因素而变化,例如在这里可以看到)
  • 通常,在延迟和吞吐量方面,您将获得更一致的性能,但这并非总是如此(与上面相同的报告)
  • 然而,如果你没有看到任何IO的压力,你不可能看到使用PIOPS的巨大差异(除了更一致的性能)

由于你的IO看起来并不是你的瓶颈(我在这里进行有限的证据/信息),我不认为你会看到比你目前看到的100 PIOPS更多的东西,但你应该有更可预测的性能。