伺服器併發處理的時候如何避免殭屍程序的產生

2022-05-29 05:54:16 字數 1098 閱讀 9338

當伺服器處理多個請求鏈結的時候,常用的做法是收到乙個請求,伺服器就fork乙個子程序,

如果父程序呼叫wait函式處理子程序結束時的狀態資訊,那麼wait函式必須等待子程序的

結束,這時同一時刻伺服器就只能處理乙個請求,如果考慮不使用wait函式,那麼接受乙個

請求,結果就會產生乙個殭屍程序,因為父程序一直fork,init程序也無法接管結束的子進

程,這時候,因為一台伺服器產生的程序數是有限的,不是無限的,而殭屍程序有必然會佔

據乙個程序號,所以殭屍程序數目一定多的時候,會造成無法再處理新的請求鏈結。那麼

如何避免這種情況的發生呢,就是使用兩次fork函式。

偽**:

socket

();bind();listen();while(1

)

elseif(

pid==

0)

elseif(

pid2==0

)

close

();exit

();

}

}

}}

圖示:

這樣就能夠保證1快速處理多個請求鏈結,而且不會有殭屍程序的產生

來自為知筆記(wiz)

如何提高伺服器併發處理能力

以下內容為入門級介紹,意在對老技術作較全的總結而不是較深的研究。主要參考 構建高效能web站點 一書。一台伺服器在單位時間裡能處理的請求越多,伺服器的能力越高,也就是伺服器併發處理能力越強 吞吐率,單位時間裡伺服器處理的最大請求數,單位req s 從伺服器角度,實際併發使用者數的可以理解為伺服器當前...

伺服器併發處理架構

網路伺服器如何處理併發請求的模型稱之為多工體系結構。1.inetd模式 在大部分unix作業系統中,預設的多工體系結構是inetd應用程式。通用的網路伺服器體系結構inetd分為兩個部分 主服務程序和客戶服務程序。主服務程序通常用於等待客戶端的連線請求。一旦客戶端發起乙個請求,主伺服器將建立連線,同...

伺服器設計 處理併發請求

伺服器設計技術有很多,按使用的協議來分有tcp伺服器和udp伺服器。按處理方式來分有迴圈伺服器和併發伺服器。在網路程式裡面,一般來說都是許多客戶對應乙個伺服器,為了處理客戶的請求,對服務端的程式就提出了特殊的要求。目前最常用的伺服器模型有 迴圈伺服器 伺服器在同一時刻只能響應乙個客戶端的請求 併發伺...