Paddy Carroll Asked: 2013-09-06 01:40:54 +0800 CST2013-09-06 01:40:54 +0800 CST 2013-09-06 01:40:54 +0800 CST 我可以禁用日记功能以提高性能吗 772 我们在 AWS 上运行了一个 16 分片的 MongoDB 2.4 安装,它正在吃钱。 数据易变,仅在创建后 15 分钟内使用 如果集群出现故障,我们将其清除并重新启动 ~ 30 秒的停机时间 我注意到大部分磁盘压力似乎是日志 有什么原因我不能禁用日记功能? mongodb 1 个回答 Voted Best Answer Adam C 2013-09-06T08:42:08+08:002013-09-06T08:42:08+08:00 应该注意的是,在任何具有大量写入量的 MongoDB 系统上,大部分持续/持续的磁盘使用将来自日志——毕竟它每 100 毫秒同步到磁盘一次——所以这种观察并不罕见。 如果你真的可以在 30 秒内消灭 16 个碎片并恢复(这令人印象深刻),那么你可以以最小的风险消除日志,是的,但你也可以不那么激烈。但是,在您这样做之前,请考虑摆脱日志意味着非干净重新启动 amongod会使您的数据处于未知状态(可能可以,也可能不会)。如果您在此模式下运行,您需要确保有办法检测任何差异(可能不会作为中断出现)。 还值得注意的是,这基本上是一种不受支持的生产操作模式,因此获得任何有关问题的帮助可能意味着必须重新打开日志。 最后,在关闭日志之前,请先考虑以下这些稍微不那么激烈的步骤: 将日志移动到它自己的磁盘/卷 - 这是一个标准的预写日志,意味着顺序写入 - 与通常的数据写入非常不同,因此将它放在自己的磁盘/卷上可以显着提高效率,特别是如果你的其他 IO 是更随机分布(常见于 MongoDB)。最后,在撰写本文时,您永远不应该将日志放在 NFS 挂载上 - 它运行不佳(可能不适用于这里,但一般来说是个好建议)。 更改日志的提交间隔 - 默认为 100 毫秒,但您可以增加到 300 毫秒(请参阅此处的文档) - 这是一个小调整,但可能会有所帮助 虽然它与日志没有直接关系,但其他竞争写入将来自数据的 fsync 进程(默认情况下每 60 秒)。如果你改变它,你也可以提高性能并消除磁盘的压力。同样,有关详细信息,请参阅有关 syncdelay的文档。 看看您是如何写入数据的——有时大型数组更新、大型或不需要的索引等可能会转化为比应有的更多写入。
应该注意的是,在任何具有大量写入量的 MongoDB 系统上,大部分持续/持续的磁盘使用将来自日志——毕竟它每 100 毫秒同步到磁盘一次——所以这种观察并不罕见。
如果你真的可以在 30 秒内消灭 16 个碎片并恢复(这令人印象深刻),那么你可以以最小的风险消除日志,是的,但你也可以不那么激烈。但是,在您这样做之前,请考虑摆脱日志意味着非干净重新启动 a
mongod
会使您的数据处于未知状态(可能可以,也可能不会)。如果您在此模式下运行,您需要确保有办法检测任何差异(可能不会作为中断出现)。还值得注意的是,这基本上是一种不受支持的生产操作模式,因此获得任何有关问题的帮助可能意味着必须重新打开日志。
最后,在关闭日志之前,请先考虑以下这些稍微不那么激烈的步骤: