动态

列表
创建 时间

一次容器裏的殭屍進程排查

背景 “大棟老師”的一個應用,經常會有殭屍進程產生。程序的調用邏輯大概如下: 主進程A產生多個B類進程B1,B2,B3等,每一個B類進程又產生了若干個C類進程,C1,C2,C3,現象就是容器中會出現部分C進程的殭屍進程。 經過簡單的分析發現是一些B類進程先結束,導致一些C類進程成為殭屍進程。但是這個不符合常規的邏輯,因為正常情況下父進程如果結束,子進程會成為孤兒進程,從而被內核的1號進

创建 时间

一次容器裏的殭屍進程排查2

前序 上次的排查,我們發現在容器裏golang進程作為1號進程的時候不具備等待孤兒進程退出狀態的能力,但是bash就可以,帶着這個問題,我們進一步研究。 尋找思路 我們再次看下維基百科對於殭屍進程的定義。 殭屍進程定義 對於裏面的內容,我們不逐字逐句分析,其中有一句話 子進程死後,系統會發送SIGCHLD信號給父進程,父進程對其默認處理是忽略。如果想響應這個消息,父進程通常在信號事件處理程序中,使