發新話題

Apache 配置 MaxRequestsPerChild 參數優化

Apache 配置 MaxRequestsPerChild 參數優化

設定 Apache /etc/httpd/conf/httpd.conf(Configure the /etc/httpd/conf/httpd.conf file):
using Operating System: Linux Centos 5.2 64Bit (Red Hat Enterprise)CENTOS 5.2 x86_64 standard

用記事本打開,將MaxRequestsPerChild 0改成MaxRequestsPerChild 10000即可。
<IfModule prefork.c>
    StartServers 150
    MinSpareServers 10
    MaxSpareServers 20
    ServerLimit  20000
    MaxClients 20000
    MaxRequestsPerChild 10000
</IfModule>
通常在「Windows任務管理器-進程」中可以看到兩個apache.exe進程,一個是父進程、一個是子進程,父進程接到訪問請求後,將請求交由子進程處理。MaxRequestsPerChild這個指令設定一個獨立的子進程將能處理的請求數量。在處理「MaxRequestsPerChild 數字」個請求之後,子進程將會被父進程終止,這時候子進程佔用的內存就會釋放,如果再有訪問請求,父進程會重新產生子進程進行處理。如果 MaxRequestsPerChild預設為0(無限)或較大的數字(例如10000以上)可以使每個子進程處理更多的請求,不會因為不斷終止、啟動子進程降低訪問效率,但MaxRequestsPerChild設置為0時,如果佔用了200~300M內存,即使負載下來時佔用的內存也不會減少。

記憶體較大的服務器可以設置為0或較大的數字。內存較小的服務器不妨設置成50、100、200,以防內存溢出。

對 Apache進行優化:
編輯httpd.conf,
設置HostnameLookups、KeepAlive、MaxKeepAliveRequests 以及KeepAliveTimeout四個參數,
調整MaxSpareServers、ServerLimit、MaxClients以及 MaxRequestsPerChild參數,
還可以考慮棄用prefork而採用worker MPM。
設置mod_deflate及mod_expires模塊,
另外還可以考慮開啟mod_cache和mod_mem_cache模塊。

TOP

提高 Apache 的 MaxClients 選項:

如果碰到網頁伺服器突然變慢,然後網頁服務停止,在 apache 的 error log 找到以下語句:
[error] server reached MaxClients setting, consider raising the MaxClients setting
那麼就是 Apache 超過最大連線數,如果是 Apache 2.0 的話便不用重新編譯,只要開啟 httpd.conf 修改 MaxClients 選項:
<IfModule prefork.c>
    StartServers 150
    MinSpareServers 10
    MaxSpareServers 20
    ServerLimit  20000
    MaxClients 20000
    MaxRequestsPerChild 10000
</IfModule>
完成後重新啟動 Apache 即可。

TOP

MaxClients 預設是 150

服務器的能力畢竟是有限的,不可能同時處理無限多的連接請求,因此參數 Maxclients就用於規定服務器支持的最多並發訪問的客戶數,如果這個值設置得過大,系統在繁忙時不得不在過多的進程之間進行切換來為太多的客戶進行服務,這樣對每個客戶的反應就會減慢,並降低了整體的效率。

如果這個值設置的較小,那麼系統繁忙時就會拒絕一些客戶的連接請求。當服務器性能較高時,就可以適當增加這個值的設置。對於大型網站,應該使用提高服務器效率的策略,因此這個參數不能超過硬件本身的限制,如果頻繁出現拒絕訪問現象,就說明需要升級服務器硬體了。當不太在意對客戶瀏覽器的反應速度,或者認為反應速度較慢也比拒絕連接好,就也可以略微超過硬件條件來設置這個參數。 但具體這個數值以多少為宜呢?當對性能要求較高時,可以用下面的方法確定如何配置此參數。

首先,估計你的最大可能並發的連接數,或者在高負載時用命令

ps -ef|grep apache|wc

測得最大進程數,通常MaxClients應該是這個數值的兩倍左右。
如果當前網站在高負載時的訪問速度可以接受,但有拒絕服務現象,則應把此參數調大,如果無拒絕服務現象,但訪問速度緩慢,則應減低此數值。

TOP

發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。