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