改变冲水频率的风险
Risks of changing flushes frequency
通过 iostat
我发现磁盘写入每分钟出现一次峰值。我认为这些峰值是由 fsync
引起的,因为 MongoDB 默认情况下每 60 秒将数据刷新到磁盘。
我还可以发现与慢速查询日志中出现的峰值一致。
有一个名为 storage.syncPeriodSecs 的选项,但根据文档:
Do not set this value on production systems. In almost every situation, you should use the default setting.
更频繁地执行 fsync 可以减少尖峰,所以我想知道在生产中更改此值的风险。
如有任何想法,我将不胜感激。
详情:
MongoDB版本:
3.2.16
存储引擎:WiredTiger
峰值期间的慢查询:其中几个,大约 1 秒。
不停止服务器
部署:分片集群。具有两个成员的副本集(主要+次要)
规格:CPU8核,内存64GB,SSD硬盘
WiredTiger 存储引擎每 60 秒执行一次 checkpoint。听起来您的部署在这些检查点事件中举步维艰。如果您正在(可能)配置不足的硬件中执行大量写入负载,那么您看到的这种行为是典型的。
通常不建议在生产环境中更改 syncPeriodSecs
值,因为默认值被认为是内存使用、fsync 事件数、丢失数据的可能性之间的正确平衡崩溃中的 fsync 事件,以及典型硬件配置中的其他注意事项。
更改此值可能会使摊位变得更糟。您当然可以通过更改它(更低或更高)来做一些实验,看看它是否可以 "smooth out" fsync 事件。话虽如此,这是一种高级调整机制,最好在其他选项不再可用时保留。如果可能的话,通常可以通过提供更好的硬件来解决像这样的停顿,因为当前的硬件似乎在您期望它处理的负载下苦苦挣扎。
通过 iostat
我发现磁盘写入每分钟出现一次峰值。我认为这些峰值是由 fsync
引起的,因为 MongoDB 默认情况下每 60 秒将数据刷新到磁盘。
我还可以发现与慢速查询日志中出现的峰值一致。
有一个名为 storage.syncPeriodSecs 的选项,但根据文档:
Do not set this value on production systems. In almost every situation, you should use the default setting.
更频繁地执行 fsync 可以减少尖峰,所以我想知道在生产中更改此值的风险。
如有任何想法,我将不胜感激。
详情:
MongoDB版本: 3.2.16
存储引擎:WiredTiger
峰值期间的慢查询:其中几个,大约 1 秒。 不停止服务器
部署:分片集群。具有两个成员的副本集(主要+次要)
规格:CPU8核,内存64GB,SSD硬盘
WiredTiger 存储引擎每 60 秒执行一次 checkpoint。听起来您的部署在这些检查点事件中举步维艰。如果您正在(可能)配置不足的硬件中执行大量写入负载,那么您看到的这种行为是典型的。
通常不建议在生产环境中更改 syncPeriodSecs
值,因为默认值被认为是内存使用、fsync 事件数、丢失数据的可能性之间的正确平衡崩溃中的 fsync 事件,以及典型硬件配置中的其他注意事项。
更改此值可能会使摊位变得更糟。您当然可以通过更改它(更低或更高)来做一些实验,看看它是否可以 "smooth out" fsync 事件。话虽如此,这是一种高级调整机制,最好在其他选项不再可用时保留。如果可能的话,通常可以通过提供更好的硬件来解决像这样的停顿,因为当前的硬件似乎在您期望它处理的负载下苦苦挣扎。