apache 工作模式

我主要來說一下prefork和worker工作模式。
      prefork的工作原理

      如果不用“——with-mpm”顯式指定 某種MPM,prefork就是Unix平臺上缺省的MPM.它所採用的預派生子進程方式也是Apache1.3中採用的模式.prefork本身並沒有 使用到線程,2.0版使用它是爲了與1.3版保持兼容性;另一方面,prefork用單獨的子進程來處理不同的請求,進程之間是彼此獨立的,這也使其成爲 最穩定的MPM之一.

      prefork的工作原理是,控制進程在最 初建立“StartServers”個子進程後,爲了滿足MinSpareServers設置的需要創建一個進程,等待一秒鐘,繼續創建兩個,再等待一秒 鍾,繼續創建四個……如此按指數級增加創建的進程數,最多達到每秒32個,直到滿足MinSpareServers設置的值爲止.這就是預派生 (prefork)的由來.這種模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能.

      worker的工作原理

      相對於prefork,worker是2.0版中全新的支持多線程和多進程混合模型的MPM.由於使用線程來處理,所以可以處理相對海量的請求,而系統資 源的開銷要小於基於進程的服務器.但是,worker也使用了多進程,每個進程又生成多個線程,以獲得基於進程服務器的穩定性.這種MPM的工作方式將是 Apache2.0的發展趨勢.

      worker的工作原理是,由主控制進程生 成“StartServers”個子進程,每個子進程中包含固定的ThreadsPerChild線程數,各個線程獨立地處理請求.同樣,爲了不在請求到 來時再生成線程,MinSpareThreads和MaxSpareThreads設置了最少和最多的空閒線程數;而MaxClients設置了所有子進 程中的線程總數.如果現有子進程中的線程總數不能滿足負載,控制進程將派生新的子進程.


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章