Process

10 分鐘。CPU使用率爆發:如何找出原因是哪些程序?

  • March 15, 2016

在此處輸入圖像描述

上面的 CPU 使用率圖表是通過在我的 linux機器上執行psensor生成的。請注意 10 分鐘的活動突發消耗高達 40% 的至強。機器應該在一夜之間處於空閒狀態,除了預設配置為 Debian 的單使用者桌面設置的可能管理程序。視窗高度為 67%(由於最右側的短暫峰值)。

如何找出導致這 10 分鐘的 CPU 使用量激增的程序?理想情況下,為每個過程繪製相似的圖會很有幫助。

查看圖表,在我看來,CPU 使用率高的時段發生在整個小時或半小時內,這表明通過 cron 執行的某些東西。如果你想通過那條路線開始調查,這就是我要開始的地方。

也就是說,鑑於高 CPU 使用率的爆發時間相當長(在您的情況下為 10 分鐘),**您可以簡單地通過您自己的 cron 作業轉儲系統狀態,**以便在早上進行分析。

我建議使用迭代計數為 1 ( )top的批處理模式 ( ),因此您可以在 /etc/cron.d 中的新文件中添加如下內容:-b``-n 1

* * * * * root top -b -n 1 > /var/log/processes/$(date +%F_%R)

請記住創建一個目錄 /var/log/processes 以便寫入。

早上,從 CPU 使用率高的時段中挑出其中的一個或幾個文件,仔細查看。

預設排序順序似乎是目前 CPU 使用率最高的,這在您的情況下應該可以正常工作。否則,您可以簡單地將文件導入電子表格應用程序(它應該作為固定寬度數據導入)並在 %CPU 欄位上進行排序。一旦您知道二進製文件的名稱,您可以在磁碟上查找它(包括使用dpkg -S以確定它屬於哪個包),或者修改上面的內容,例如pstree了解導致該特定二進製文件被呼叫的原因.

反過來,這應該讓您很好地了解哪些實際程序(不僅僅是程序)正在佔用 CPU,讓您確定它是否甚至是一個問題,如果您認為這是一個問題,那麼讓您弄清楚如何把它關掉。

引用自:https://serverfault.com/questions/763853