我们的Mongo数据库定期(有时每天一次)减速大约30-40分钟。访问数据库的API遇到这种缓慢时期每5-10分钟发生的高延迟峰值。如何诊断周期性MongoDB减速?
望着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
,所以我不明白这个日志条目是什么意思。 r
是指什么?
killCursors
命令是否需要很长时间才能执行,因为有大量打开的游标需要清理?据我所知,在我们的应用程序代码中没有任何内容会显式地杀死游标,那么这是否正常工作?它经常被记录,但通常需要20-120ms。
感谢链接到Cursors页面 - 我今天早上正在寻找并找不到它。但是这实际上并没有提到'killCursors'。如果下次发生这种情况,我会看看是否可以跳箱,然后运行“mongotop”和“mongostat”... –