如何诊断周期性 MongoDB 减速?
How to diagnose periodic MongoDB slowdown?
我们的 Mongo 数据库会定期(有时每天一次)变慢大约 30-40 分钟。 API 访问数据库时,在此缓慢时期每 5-10 分钟出现一次高延迟峰值。
查看 mongod 日志文件,这两行出现在缓慢的开始,并且与每个 API 延迟峰值同时发生(为了便于阅读,我已经格式化了 json) :
killcursors keyUpdates:0 numYields:0 locks(micros) r:91 4157ms
serverStatus was very slow: {
after basic: 0,
after asserts: 0,
after backgroundFlushing: 0,
after connections: 0,
after cursors: 0,
after dur: 0,
after extra_info: 0,
after globalLock: 0,
after indexCounters: 0,
after locks: 0,
after network: 0,
after opcounters: 0,
after opcountersRepl: 0,
after recordStats: 2359,
after repl: 2359,
at end: 2359
}
在这些之后记录查询,因为它们需要几秒钟 - 比正常情况慢得多。
killCursors
似乎没有 much/any 文档,所以我不明白这个日志条目是什么意思。 r
指的是什么?
是否killCursors
命令执行时间过长,因为有大量打开的游标需要清理?据我所知,我们的应用程序代码中没有任何内容会明确杀死游标,所以这是一项正常工作吗?它经常被记录,但通常需要 20-120 毫秒。
By default, the server will automatically close the cursor after 10 minutes of inactivity, or if client has exhausted the cursor.
那是说您可能有一些断开的连接并且正在进行清理 - 或者其他 disk/system 维护工作可能同时在进行 window。
要诊断性能下降的根本原因 - 您可以观察 mongo top 输出、检查磁盘和内存使用情况并查看哪个特定区域出现峰值。
killCursor 参考:manual
r 是 Intent Shared (IS) 锁。
Killcursors 不是这里的问题。您可能需要深入挖掘才能找到实际问题。检查索引。解释您的 API 使用的所有查询。
你可以从 https://groups.google.com/forum/#!msg/mongodb-user/qc4AD7kqu4U/7kaI1zwaAwAJ
得到一个想法
我们的 Mongo 数据库会定期(有时每天一次)变慢大约 30-40 分钟。 API 访问数据库时,在此缓慢时期每 5-10 分钟出现一次高延迟峰值。
查看 mongod 日志文件,这两行出现在缓慢的开始,并且与每个 API 延迟峰值同时发生(为了便于阅读,我已经格式化了 json) :
killcursors keyUpdates:0 numYields:0 locks(micros) r:91 4157ms
serverStatus was very slow: {
after basic: 0,
after asserts: 0,
after backgroundFlushing: 0,
after connections: 0,
after cursors: 0,
after dur: 0,
after extra_info: 0,
after globalLock: 0,
after indexCounters: 0,
after locks: 0,
after network: 0,
after opcounters: 0,
after opcountersRepl: 0,
after recordStats: 2359,
after repl: 2359,
at end: 2359
}
在这些之后记录查询,因为它们需要几秒钟 - 比正常情况慢得多。
killCursors
似乎没有 much/any 文档,所以我不明白这个日志条目是什么意思。 r
指的是什么?
是否killCursors
命令执行时间过长,因为有大量打开的游标需要清理?据我所知,我们的应用程序代码中没有任何内容会明确杀死游标,所以这是一项正常工作吗?它经常被记录,但通常需要 20-120 毫秒。
By default, the server will automatically close the cursor after 10 minutes of inactivity, or if client has exhausted the cursor.
那是说您可能有一些断开的连接并且正在进行清理 - 或者其他 disk/system 维护工作可能同时在进行 window。
要诊断性能下降的根本原因 - 您可以观察 mongo top 输出、检查磁盘和内存使用情况并查看哪个特定区域出现峰值。
killCursor 参考:manual
r 是 Intent Shared (IS) 锁。 Killcursors 不是这里的问题。您可能需要深入挖掘才能找到实际问题。检查索引。解释您的 API 使用的所有查询。 你可以从 https://groups.google.com/forum/#!msg/mongodb-user/qc4AD7kqu4U/7kaI1zwaAwAJ
得到一个想法