Mongodb

MongoDB 最大化 CPU 使用率

  • April 13, 2020

我這裡有一個奇怪的。我們已經設置了由我們的測試版填充的生產 MongoDB,因此我們有一些工作要做。一旦我們啟動服務,我們立即達到了 100% 的 CPU 負載,沒有任何執行,因此我們將伺服器從它的副本集中刪除,並將其降低到 2-3% 的 CPU。

當我們讓所有使用者都處於活躍狀態時,我們看到它飆升至 100%,我們說我們將讓它過夜並監控它是否有任何改善的跡象。

第二天早上我們進來了,CPU 降到了 40% 左右,看起來很穩定。現在大約一周後,我們遇到了與上述相同的問題,除了這已經發生了近 4 天,我們的 CPU 已達到最大值。

我使用了 db.currentOP() 命令,並從“WT RecordStoreThread:local.oplog.rs”中找到了一個,它已經執行了 355254 秒,相當於大約 98 小時,這與 CPU 被最大化匹配。

這台機器有 8 個核心 @ 2.4GHz 和 16GB RAM,所以我認為 CPU 在這麼早的階段不會成為這麼大的問題。

我們的配置文件如下所示,IP 和埠被盯著看:

systemLog:
  destination: file
  path: E:\data\log\mongod.log
storage:
  dbPath: E:\data\db
net:
  port: xxxxx
  bindIp: xxx.xxx.xxx.xxx
#replication:
#   replSetName: "rs1"
security:
  authorization: enabled
#   keyFile: E:\data\mongodb.key

我今天重新啟動了該服務,希望可能釋放一些資源,但它立即再次達到極限。

我已經查看了關於 SO 的其他問題,但似乎沒有一個真正的答案可以解決這個問題。感謝您抽出寶貴時間閱讀本文,如果有人遇到同樣的問題或可能對如何解決它有任何想法,那將是很好的得到您的回饋!

確實很奇怪。

local.oplog.rs 正在記錄在 64 位系統上啟用(預設)的內容(32 位預設值為 false)。因此,該執行緒的執行時間應該與您的 mongod 正常執行時間相同。

但是日誌不應該增加 CPU 使用率。當您的 CPU 使用率很高時,會mongotop顯示mongostat什麼?系統中發生了什麼?

如果您查看top-command 的結果,“誰”正在消耗最多的 CPU 功率(一個或多個 mongod 程序?),最高的 %-value 是 us(er)、sy(stem)、ni(ce)、id(le) , 等待)?

我有同樣的問題,MongoDB 使用所有 CPU 資源(12 vCPU,1.119 % CPU)。

在此處輸入圖像描述

在為最熱門的欄位創建 INDEX 後,使用率下降到 12%

在此處輸入圖像描述

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