檢視殭屍程序並殺掉殭屍程序

2021-09-10 08:14:02 字數 1372 閱讀 1372

在運維過程中,我們經常會碰到機器由於某幾個特殊的殭屍程序造成整台伺服器上的程序異常卡死,負載變高。

例如以下:

其中,存在8個殭屍程序,並且程序19712的cpu使用異常。檢視具體的殭屍程序有哪些:

發現這些子殭屍程序的父程序即為19712程序。其對應的其實就是namenode程序

解決辦法:

(1)如果業務不繁忙,允許停機,可以使用重啟機器來解決(這種方法不行,業務不能停)

(2)殺掉父程序(由於是namenode程序,如果是ha模式,殺掉後會切換到另個nn節點)(未採取,我們找的是根本原因)

kill -9

父程序號

//注意:如果這個父程序號是

init

程序,殺掉它,整個系統就掛了

對於此種方法,雖然能暫時解決本台機器上的殭屍程序,如果沒有找到致使殭屍程序的根本原因,就算切到了另個nn節點,另個nn節點也會出現殭屍異常程序的。

(3)將篩選到的殭屍子程序進行掛起(未採取,但其他情況可以使用)

kill -hup

程序pid     //將子程序掛起後,相當於什麼也不做了

最終的解決辦法:

根據主機上19712程序即namenode程序的日誌,發現日誌中大量報錯"無此使用者",根據報錯,手動在兩個nn節點上建立所有所需的使用者後,殭屍程序立馬全部消失,並且主機負載全部恢復了正常。

常用命令總結:

top   //

檢視裡面的

zombie

對應的程序有多少個

ps -e -o ppid,stat | grep z | cut -d " " -f2 | wc -l  //

統計殭屍程序的個數

ps -ef | grep "defunct"   //

可以看到殭屍程序的父程序號

如果要殺掉殭屍程序,需要殺掉它的父程序號,命令為:

kill -9

父程序號

//注意:如果這個父程序號是

init

程序,殺掉它,整個系統就掛了,所以考慮使用下面這個命令

kill -hup

程序pid    //

將篩選到的子程序掛起

參考**:

檢視殭屍程序

ps axo stat,pid,ppid,cmd grep e zz ps axo stat,pid,ppid,cmd grep e zz head 顯示前10行 head n 20 顯示前20行 top 用於實時顯示程序得狀態,可以檢視cpu和記憶體得使用率 top命令也可以檢視系統中殭屍程序的數...

Linux如何殺掉殭屍程序

殭屍程序是當子程序比父程序先結束,而父程序又沒有 子程序,釋放子程序占用的資源,此時子程序將成為乙個殭屍程序。如果父程序先退出 子程序被init接管,子程序退出後init會 其占用的相關資源。由於子程序的結束和父程序的執行是乙個非同步過程,即父程序永遠無法 子程序 到底什麼時候結束.那麼會不會因為父...

檢視並殺死defunct殭屍程序

defunct程序如何直接kill掉 只要殺死它的父程序,defunct程序就自動消失了.檢視defunct程序 ps e o ppid,stat grep z cut d f1 殺死ps e o ppid,stat grep z cut d f1 xargs kill 9 defunct程序的產生...