通过iostat,我可以在每分钟一次的磁盘写入中找到尖峰。我认为这些尖峰是由fsync引起的,因为默认情况下,MongoDB每60秒将数据刷新到磁盘。我还可以发现,慢查询日志中出现了与峰值一致的慢速查询。
有一个名为storage.syncPeriodSecs的选项,但是根据文档:
不要在生产系统上设置此值。在几乎所有情况下,都应该使用默认设置。
更频繁地执行fsync可以减少峰值,所以我想知道在生产中更改这个值的风险。
如果有任何想法我会很感激的。
详细信息:
发布于 2018-09-17 01:36:02
WiredTiger存储引擎每60秒执行一次检查点。在这些检查点事件中,您的部署听起来很困难。这种行为是典型的,如果你做了一个沉重的硬件写负载,这是(可能)供应不足。
通常不建议在生产环境中更改syncPeriodSecs值,因为默认值被认为是内存使用、fsync事件的数量、崩溃中fsync事件之间丢失数据的可能性以及典型硬件配置中的其他考虑因素之间的适当平衡。
改变这个值可能会使货摊变得更糟。当然,您可以通过更改它(较低或更高)来进行一些实验,看看它是否能够“平滑”fsync事件。尽管如此,这是一种高级的调优机制,在其他选项不再可用时最好保留。如果可能的话,这样的延迟通常可以通过提供更好的硬件来解决,因为当前的硬件似乎在您期望它处理的负载下苦苦挣扎。
https://stackoverflow.com/questions/52254599
复制相似问题