apache進程和用戶請求的關系


apache工作模式:

beos工作模式(跟linux關系不大,或者暫時用不上)

在Beos系統上的工作模式,使用一個單獨的控制線程來創建和控制處理請求的工作線程。
event工作模式(不太穩定,或者說暫時用不上)
event模式由於把服務進程從鏈接中分離出來,在開啟KeepAlive場合下相對worker模式能夠承受的了更高的負載。event模式為 worker開發的變種模式,配置以及指令與worker完全相同。不過event模式不能很好的支持https的訪問,有時還會出現一系列的問題。
worker工作模式(與php配合不好,或者說暫時用不上)
worker模式由於使用線程來進行處理請求,所以能夠處理海量請求,而系統資源的開銷要小於基於進程的服務器。同時worker模式也使用了多進程,每個進程又有着多個線程,以獲得基於進程服務器的穩定性。
mpmt_os2工作模式(很少用,或者說暫時用不上)
mpmt_os2是專門針對OS/2優化過的混合多進程多線程多路處理模塊(MPM) 。

prefork工作模式(本篇文章的主角,使用最多而且最穩定的工作模式)

prefork工作模式是linux下apache安裝時候的默認工作模式,是使用最普遍的工作模式。為了能夠簡單的明白他的工作原理,下面是一個假設:
有一台正在運行的apache服務器,用戶A訪問該apache的時候apache建立一個新的進程1處理用戶A的請求。
這時又有一個用戶B訪問該apache,apache又建立一個新的進程2處理用戶B的請求。
后來又有用戶C,D,E訪問該apache,apache又建立三個進程3,4,5處理他們的請求。
如果每當一個新用戶訪問該apache,apache再建立一個新的進程處理用戶的請求,是不是太慢了呢?
所以apache的prefork模式在apache第一次啟動的時候就建立5個進程,等待用戶的連接請求,有一個用戶訪問,就有一個進程處理他的請求。
那么如果有5個用戶同時訪問apache,apache第一次建立的5個進程全部用光了,所以apache就再從新在建立5個進程,等待下一批用戶的請求。
prefork模式會根據服務器的硬件情況,設定apache最多只能同時建立256個進程。再多的請求就只能等待前面的進程處理完畢在進行處理。
假設完畢
 
說明:每次用戶使用瀏覽器訪問服務器,占用一個進程(apache的prefork工作模式下預設好的進程),當所有內容響應完畢進程就會自動關閉!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM