并發參數設置
# 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的工(gōng)作原理是,控制進程在最初建立”StartServers”個子進程後,
爲了滿足”MinSpareServers”設置的需要創建一(yī)個進程,
等待一(yī)秒鍾,繼續創建兩個,再等待一(yī)秒鍾,繼續創建四個……如此按指數級增加創建的進程數,最多達到每秒32個,
直到滿足 MinSpareServers設置的值爲止。
這就是預派生(shēng)(prefork)的由來。這種模式可以不必在請求到來時再産生(shēng)新的進程,從而減小(xiǎo)了系統開(kāi)銷以增加性能。
MaxSpareServers設置了最大(dà)的空閑進程數,如果空閑進程數大(dà)于這個值,apache會自動kill掉一(yī)些多餘進程。
這個值不要設得過大(dà),但如果設的值比MinSpareServers小(xiǎo),apache會自動把其調整爲MinSpareServers+ 1。
如果站點負載較大(dà),可考慮同時加大(dà)MinSpareServers和MaxSpareServers。
MaxRequestsPerChild設置的是每個子進程可處理的請求數。
每個子進程在處理了”MaxRequestsPerChild” 個請求後将自動銷毀。
0意味着無限,即子進程永不銷毀。雖然缺省設爲0可以使每個子進程處理更多的請求,但如果設成非零值也有兩點重要的好處:
可防止意外(wài)的内存洩漏;在服務器負載下(xià)降的時侯會自動減少子進程數。
因此,可根據服務器的負載來調整這個值。但也不能太小(xiǎo),不然系統不斷的開(kāi)啓新的apache進程,造成資(zī)源浪費(fèi)。
MaxClients是這些指令中(zhōng)最爲重要的一(yī)個,設定的是apache可以同時處理的請求,是對apache性能影響最大(dà)的參數。
其缺省值 150是遠遠不夠的,如果請求總數已達到這個值(可通過ps -ef|grep http|wc -l來确認),那麽後面的請求就要排隊,直到某個已處理請求完畢。
這就是系統資(zī)源還剩下(xià)很多而http訪問卻很慢(màn)的主要原因。
其它參數設置
ServerTokens Prod – 隐藏服務器版本信息,隻顯示 apache
ServerSignature Off
HostnameLookups Off
Timeout 5 – 請求超時時間
KeepAlive On
KeepAliveTimeout 5
MaxKeepAliveRequests 100
關閉不需要的模塊
注釋掉加載該模塊,及相關配置項
下(xià)一(yī)篇 apache中(zhōng)MaxClients和ServerLimit參數介紹
上一(yī)篇: ecshop上傳商(shāng)品圖片提示不支持圖片格式