Mongodb
那是什麼意思?命令磷eriod我cT一個skRunner磷和r一世○d一世C噸一種s到R你nn和rPeriodicTaskRunner任務:UnusedLockCleaner 耗時:273ms
隨著
mloginfo
我發現一個奇怪的日誌條目。在 MongoDB 文件和其他相關站點中沒有找到任何關於它的資訊。$ mloginfo mongodb.log --distinct source: mongodb.log host: example start: 2016 Aug 25 14:57:57.630 end: 2016 Aug 26 08:02:05.751 date format: iso8601-local length: 572308 binary: mongod version: 3.2.8 storage: wiredTiger DISTINCT 28069 connection accepted from ... # ... ( ... now open) 27587 end connection ... ( ... now open) 15 exception: ... on: 10 serverStatus was very slow: 4 task: ... took: ... ms 3 killcursors: found ... of 3 SocketException handling request, closing client connection: 1 git version: 1 waiting for connections on port
那到底是什麼?什麼是 a
PeriodicTaskRunner
和做UnusedLockCleaner
什麼?DBA 需要採取哪些措施?2016-08-25T21:03:38.449+0200 I COMMAND [PeriodicTaskRunner] task: UnusedLockCleaner took: 105ms 2016-08-26T00:21:40.285+0200 I COMMAND [PeriodicTaskRunner] task: UnusedLockCleaner took: 184ms 2016-08-26T01:25:40.940+0200 I COMMAND [PeriodicTaskRunner] task: UnusedLockCleaner took: 273ms 2016-08-26T01:55:41.357+0200 I COMMAND [PeriodicTaskRunner] task: UnusedLockCleaner took: 234ms
MongoDB 的好處在於它是開源的,所以你的答案在 程式碼中,從關於 UnusedLockCleaner 的評論開始:
定期清除未使用的鎖桶。在清理後第一次再次使用鎖時,需要分配它,同樣,客戶端每次首次使用意圖模式可能需要創建一個分區鎖頭。清理工作大約每分鐘完成一次。
然後看一下
lock_manager
程式碼,我們可以獲得有關清理功能的更多資訊:遍歷所有儲存桶並刪除所有沒有請求的鎖。這個呼叫有點昂貴,應該只用於減少鎖管理器的記憶體佔用。
基本上,它看起來像是數據庫正在執行一些後台維護,以清除未使用的鎖並控制鎖管理器的記憶體使用。沒什麼好擔心的,因為如果數據庫很忙並且鎖正在使用中,它們將不會被清理。如果您看到(可重現的)問題,那麼最好打開一張票與開發人員一起調試,因為這不是故意的。