MongoDB 最大化 CPU 使用率
我這裡有一個奇怪的。我們已經設置了由我們的測試版填充的生產 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%