在默認狀況下,apache的最大併發數爲150,所以須要調整linux
首先搞清楚當前apache是什麼MPM(多路處理模塊)。通俗講就是apahce處理多併發的方式,常見的有三種apache
perfork,,worker,winnt模編程
prefork的工做原理併發
控制進程在最初創建「StartServers」個子進程後,爲了知足MinSpareServers設置的須要建立一個進程,等待一秒鐘,繼續建立兩 個,再等待一秒鐘,繼續建立四個……如此按指數級增長建立的進程數,最多達到每秒32個,直到知足MinSpareServers設置的值爲止。這就是預 派生(prefork)的由來.這種模式能夠沒必要在請求到來時再產生新的進程,從而減少了系統開銷以增長性能。性能
worker的工做原理網站
由主控制進程生成「StartServers」個子進程,每一個子進程中包含固定的ThreadsPerChild 線程數,各個線程獨立地處理請求。一樣,爲了避免在請求到來時再生成線程,MinSpareThreads和MaxSpareThreads設置了最少和最 多的空閒線程數;而MaxClients設置了全部子進程中的線程總數.若是現有子進程中的線程總數不能知足負載,控制進程將派生新的子進 程。 線程
利用httpd命令來控制進程
#httpd.exe -lci
當前爲winnt.c模式it
如何調整最大併發數
① 首先打開apache 的httpd.conf
?
1
2
3
# Server-pool management (MPM specific)
#打開mpm文件配置
Include conf/extra/httpd-mpm.conf
② 打開httpd-mpm.conf
找到winnt模塊
?
1
2
3
4
5
6
<IfModule mpm_winnt_module>
//最大併發連接數
ThreadsPerChild 150
//子進程能夠建立的最大進程數
MaxRequestsPerChild 0
</IfModule>
對於併發數,推薦配置:
若是咱們的網站是中型網站, 建議在1500-2500之間。
由於在 linux 下,通常說採用的 MPM 是 perfork 模式,咱們看看如何配置 .
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150 #併發量
MaxRequestsPerChild 0 #一個進程對應的線程數,對 worker更用.
</IfModule>
給你們一個合理的建議配置. 對大部分網站,中型網站,配置:
<IfModule mpm_prefork_module>
StartServers 5 #預先啓動
MinSpareServers 5
MaxSpareServers 10 #最大空閒進程
ServerLimit 2500 #用於修改apache編譯參數
MaxClients 2000 #最大併發數
MaxRequestsPerChild 0
</IfModule>
若是你的網站pv值 百萬
ServerLimit 2500 #用於修改apache編程參數
MaxClients 2000 #最大併發數