并發(fā)參數(shù)設(shè)置
# prefork MPM
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
StartServers 8
MinSpareServers 32
MaxSpareServers 64
ServerLimit 10240
MaxClients 10000
MaxRequestsPerChild 10000
prefork的工作原理是,控制進程在最初建立”StartServers”個子進程后,
為了滿足”MinSpareServers”設(shè)置的需要創(chuàng)建一個進程,
等待一秒鐘,繼續(xù)創(chuàng)建兩個,再等待一秒鐘,繼續(xù)創(chuàng)建四個……如此按指數(shù)級增加創(chuàng)建的進程數(shù),最多達到每秒32個,
直到滿足 MinSpareServers設(shè)置的值為止。
這就是預(yù)派生(prefork)的由來。這種模式可以不必在請求到來時再產(chǎn)生新的進程,從而減小了系統(tǒng)開銷以增加性能。
MaxSpareServers設(shè)置了最大的空閑進程數(shù),如果空閑進程數(shù)大于這個值,apache會自動kill掉一些多余進程。
這個值不要設(shè)得過大,但如果設(shè)的值比MinSpareServers小,apache會自動把其調(diào)整為MinSpareServers+ 1。
如果站點負載較大,可考慮同時加大MinSpareServers和MaxSpareServers。
MaxRequestsPerChild設(shè)置的是每個子進程可處理的請求數(shù)。
每個子進程在處理了”MaxRequestsPerChild” 個請求后將自動銷毀。
0意味著無限,即子進程永不銷毀。雖然缺省設(shè)為0可以使每個子進程處理更多的請求,但如果設(shè)成非零值也有兩點重要的好處:
可防止意外的內(nèi)存泄漏;在服務(wù)器負載下降的時侯會自動減少子進程數(shù)。
因此,可根據(jù)服務(wù)器的負載來調(diào)整這個值。但也不能太小,不然系統(tǒng)不斷的開啟新的apache進程,造成資源浪費。
MaxClients是這些指令中最為重要的一個,設(shè)定的是apache可以同時處理的請求,是對apache性能影響最大的參數(shù)。
其缺省值 150是遠遠不夠的,如果請求總數(shù)已達到這個值(可通過ps -ef|grep http|wc -l來確認),那么后面的請求就要排隊,直到某個已處理請求完畢。
這就是系統(tǒng)資源還剩下很多而http訪問卻很慢的主要原因。
其它參數(shù)設(shè)置
ServerTokens Prod – 隱藏服務(wù)器版本信息,只顯示 apache
ServerSignature Off
HostnameLookups Off
Timeout 5 – 請求超時時間
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
關(guān)閉不需要的模塊
注釋掉加載該模塊,及相關(guān)配置項