我們的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」... –