影響apache性能的幾個重要參數

apache是經常用到的一個處理靜態頁面的服務器,有時候可能需要對它的配置文件進行設置優化,這裏整理一下:

(以下參數在conf/httpd.conf中設置)

KeepAlive --是否允許持續連接
MaxKeepAliveRequests --允許的持續連接的最大數
KeepAliveTimeout --持續連接在沒有請求多少秒後切斷

StartServers --最初啓動時啓動多少個服務器進程
MinSpareServers --空閒服務器進程的最小數
MaxSpareServers --空閒服務器進程的最大數
MaxClients --同時處理的請求數(最重要的參數,要少於ServerLimit)
MaxRequestsPerChild --每個子進程處理的最大請求數


簡單說明:

prefork控制進程在最初建立“StartServers”個子進程後,爲了滿足MinSpareServers設置的需要創建一個進程,等待一秒鐘,繼續創建兩個,再等待一秒鐘,繼續創建四個……如此按指數級增加創建的進程數,最多達到每秒32個,直到滿足MinSpareServers設置的值爲止。這種模式可以不必在請求到來時再產生新的進程,從而減小了系統開銷以增加性能。

MaxSpareServers設置了最大的空閒進程數,如果空閒進程數大於這個值,Apache會自動kill掉一些多餘進程。這個值不要設得過大,但如果設的值比MinSpareServers小,Apache會自動把其調整爲MinSpareServers+1。如果站點負載較大,可考慮同時加大MinSpareServers和 MaxSpareServers。

MaxRequestsPerChild設置的是每個子進程可處理的請求數。每個子進程在處理了 “MaxRequestsPerChild”個請求後將自動銷燬。0意味着無限,即子進程永不銷燬。雖然缺省設爲0可以使每個子進程處理更多的請求,但如果設成非零值也有兩點重要的好處:1、可防止意外的內存泄漏。2、在服務器負載下降的時侯會自動減少子進程數。


下面是個例子:

<IfModuleprefork.c>
  ServerLimit 2000
  StartServers 10
  MinSpareServers 10
  MaxSpareServers 15
  MaxClients 1000
  MaxRequestsPerChild 2048
</IfModule>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章