Linux殺不死的程序之CPU使用率700%
阿新 • • 發佈:2019-08-15
1. 問題發現
[root@zwlbs3 ~]# top
i. 發現有個程序CPU使用率居然700%,COMMAND 是一些隨機的字串組成,完了~ 中標了;第一想到就是“沙雕”它,kill 命令給我上。
[root@zwlbs3 ~]# kill -9 "PID"
ii. 但是發現 kill 該程序平靜一會後又啟動了。
注:老圖複用,PID、COMMAND 都有變化。
2. 檢視程序的詳細資訊
[root@zwlbs3 ~]# cd /proc/748/ [root@zwlbs3 748]# ls -ial # "748"是該程序的 PID,根據你的 PID 來檢視即可。
如圖:
發現該程序是在 /dev/shm 目錄下的,/dev/shm 是一個什麼目錄呢?
從網上摘下來一段我們解一下 /dev/shm
1) 首先可以看出來/dev/shm是一個裝置檔案, 可以把/dev/shm看作是系統記憶體的入口, 可以把它看做是一塊物理儲存裝置,一個tmp filesystem, 你可以通過這個裝置向記憶體中讀寫檔案, 以加快某些I/O高的操作,比如對一個大型檔案頻繁的open, write, read。
2) 據說oracle就利用了/dev/shm(shitou沒用過oracle), 可以通過mount命令列出當前的/dev/shm的掛載的檔案系統。
3) 既然是基於記憶體的檔案系統,系統重啟後/dev/shm下的檔案就不存在了。Linux預設(CentOS)/dev/shm分割槽的大小是系統實體記憶體的50%, 雖說使用/dev/shm對檔案操作的效率會高很多。但是目前各發行軟體中卻很少有使用它的(除了前面提到的Oracle), 可以通過ls /dev/shm檢視下面是否有檔案, 如果沒有就說明當前系統並沒有使用該裝置。
檢視 /dev/shm 目錄的有沒有相關檔案
[root@zwlbs3 ~]# ls -a /dev/shm/ . .. # 沒有任何相關的檔案,奇怪了。
- crontab 也沒有相關計劃任務。
- 使用 which 命令也沒有找到相關的檔案。
- 檢視系統日誌也是正常,非常奇怪。
- 幾乎沒有找到該程序相關的檔案。
3. 解決辦法
i. 檢視某個程序內部執行緒佔用情況分析
[root@zwlbs3 ~]# top -H -p "PID"
ii. 原來有這麼多相關的程序,全部 kill 掉
iii. 過來幾分鐘再次檢查,發現系統負載恢復正常
本以為解決了,結果過了幾個小時檢查發現又出現了,該死的。
由於生產環境不方便重啟伺服器,被逼無奈情況下只好試試 重啟大法 了。
4. 重啟大法
重啟伺服器後一個小時,再次檢查已經恢復正常了,還是 重啟大法 好使。
- 該惡意程式有什麼作用?為何只消耗CPU資源?由於未找到相關檔案資訊,原因也暫時未清楚。
- 知道的大佬麻煩告訴我一下,非常感謝!