給自己看的apache的三種工作模式
阿新 • • 發佈:2019-02-01
1、prefork MPM 非執行緒 預派生的web伺服器,在Apache啟動之初,就預派生一些子程序等待連線,可以減少頻繁建立和銷燬程序的開銷,也不用擔心執行緒安全問題,但是一個程序相對佔用資源,消耗大量記憶體,不擅長處理高併發的場景。配置方式<IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 5 MaxRequestWorkers 250 MaxConnectionsPerChild 1000</IfModule>2、worker MPM worker使用了多程序和多執行緒的混合模式,預派生一些子程序,子程序創造執行緒,同時包括一個監聽執行緒,執行緒通過共享父程序的記憶體空間,記憶體佔用會減少一些,如果執行緒出現問題也只是影響Apache的一部分而不是全部。 但是在使用Keep-alive長連線的時候,某個執行緒會被一直佔用,即使沒有請求也需要等待超時才會被釋放。配置方法<If Module mpm_worker_module> StartServers 3 ServerLimit 16 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerchild 1000</IfModule>3、Event MPM 最新的工作模式 它解決了keep-alive長連線時佔用執行緒資源問題,會有一些專門的執行緒用來管理這些keep-alive型別的執行緒,當伺服器的執行緒處理結束後,又允許它釋放。增加了在高併發場景下的處理能力。<IfModule mpm_event_module> StartServers 3 ServerLimit 16 MinSpareThreads 75 MaxSpareThreads 250 ThreadsPerChild 25 MaxRequestWorkers 400 MaxConnectionsPerChild 1000</IfModule>