Apache優化:修改最大並發連接數


一般情況下,默認apache配置文件不可用於生產環境,需要自己根據實際情況調整參數編譯最佳狀態。

Apache的核心模塊叫做多路模塊處理(Multi-Processing Mudule,簡稱MPM)
各個系統有不同的模塊,windows使用mpm_winnt,linux用mpm_prefork或mpm_worker。
當編譯時沒有指定mpm模塊是,windows默認用mpm_winnt,linux默認用mpm_perfork。


1.查看apache使用的何種模塊使用命令:

$ httpd -l

mpm的配置文件在apache安裝目錄/conf/extra/httpd-mpm.conf。
默認apache沒有啟用mpm,httpd.conf需添加“Include conf/extra/httpd-mpm.conf”。

mpm_winnt:單進程多線程。
mpm_perfork:多進程。
mpm_worker:多進程多線程。

MPM調優(修改conf/extra/httpd-mpm.conf):

 

<IfModule mpm_winnt_module>
#每個子進程的最大並發線程數
ThreadPerChild    150 #推薦配置:小型網站=1000 中型網站=1000~2000 大型網站=2000~3000
#每個子進程允許處理的請求數。累計處理請求數超過該值,該子進程會結束(然后根據需要確定是否創建新的子進程。0表示無限制,設置非零防止內存無限泄漏,同時給進程一個壽命,當服務器負載減輕時活動的進程數減少。
MaxRequestPerChild 0 #推薦配置: 小=10000 中或大=20000~100000
</IfModule>

<IfModule mpm_perfork_module>
#啟動apache時創建的子進程數
StartServers    5 # 小=默認 中=20~50 大=50~100
#空閑狀態最小子進程數
MinSpareServers    5 # 與StartServers保持一致
#空閑狀態最大子進程數
MaxSpareServers    10 # 小=20 中=30~80 大=80~120
#允許同時連接的最大子進程數
MaxClients    150 # 小=500 中=500~1500 大=1500~3000
MaxRequestsPerChild 0 # 小=10000 中或大=10000~500000
(此外還需要設置ServerLimit,最好於MaxClients保持一致)
</IfModule>

<IfModule mpm_worker_module>
StartServers    2 #小=默認 中=3~5 大=5~10
MaxClients    150 #小=500 中=500~1500 大=1500~3000
#空閑狀態最小線程數
MinSpareThreads    25 #小=默認 中=50~100 大=100~200
#空閑狀態最大線程數
MaxSpareThreads    75 #小=默認 中=80~160 大=200~400
ThreadsPerChild    25 #小=默認 中=50~100 大=100~200
MaxRequestsPerChild 0 #小=10000 中或大=10000~500000
(此外如果MaxChilds/ThreadsPerChild大於16,ServerLimit必須大於它們的值)
</IfModule>

 

ServerLimit表示apache允許創建的最大進程數,apache編譯時內部一個硬限制ServerLimit 20000(mpm_perfork為ServerLimit 200000),如果它設置太高,會有過多的共享內存被分配,如果超過了系統能處理的能力,apache可能無法啟動,會系統變得不穩定。


免責聲明!

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



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