Mongodb

那是什麼意思?命令磷eriod我cT一個skRunner磷和r一世○d一世C噸一種s到R你nn和rPeriodicTaskRunner任務:UnusedLockCleaner 耗時:273ms

  • August 29, 2016

隨著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

那到底是什麼?什麼是 aPeriodicTaskRunner和做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程式碼,我們可以獲得有關清理功能的更多資訊:

遍歷所有儲存桶並刪除所有沒有請求的鎖。這個呼叫有點昂貴,應該只用於減少鎖管理器的記憶體佔用。

基本上,它看起來像是數據庫正在執行一些後台維護,以清除未使用的鎖並控制鎖管理器的記憶體使用。沒什麼好擔心的,因為如果數據庫很忙並且鎖正在使用中,它們將不會被清理。如果您看到(可重現的)問題,那麼最好打開一張票與開發人員一起調試,因為這不是故意的。

引用自:https://dba.stackexchange.com/questions/147994