Linux Apache prefork和worker的原理詳解

Dus發表於2015-02-23

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

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

可以通過命令httpd -l 可以檢視apache當前的模組,如果帶有worker.c就是工作在worker模式下,如果有prefork.c就是工作在prefork.c的模式下。

相關文章