Windows下Apache的優化


(1)首選查看apache的工作模式
windows下的查看apache的工作模式命令:httpd -l
如果列出mod_win32.c,則表示是 win32.c 工作方式。
列出的全部內容如下所示:
core.c
mod_win32.c
mpm_winnt.c
http_core.c
mod_so.c

mpm_winnt.c是專門針對Windows
NT優化的MPM(多路處理模塊),它使用一個單獨的父進程產生一個單獨的子進程,在這個子進程中輪流產生多個線程來處理請求。也就是說mpm_winnt只能啟動父子兩個進程,
不能像Linux下那樣同時啟動多個進程。
mpm_winnt主要通過ThreadsPerChild和MaxRequestsPerChild兩個參數來優化Apache,下面詳細來說明一下。

(2)mod_win32.c工作模式,對應的優化內容如下
在httpd.conf文件中,加入以下內容
<IfModule mpm_winnt.c>
  
ThreadsPerChild 250
   MaxRequestsPerChild 5000
</IfModule>

ThreadsPerChild
這個參數用於設置每個進程的線程數,
子進程在啟動時建立這些線程后就不再建立新的線程了. 一方面因為mpm_winnt不能啟動多個進程, 所以這個數值要足夠大,以便可以處理可能的請求高峰;
另一方面該參數以服務器的響應速度為准的, 數目太大的反而會變慢。因此需要綜合均衡一個合理的數值。

mpm_winnt上的默認值是64, 最大值是1920.
這里建議設置為100-500之間,服務器性能高的話值大一些,反之值小一些。

MaxRequestsPerChild
該參數表示每個子進程能夠處理的最大請求數,
即同時間內子進程數目.設置為零表示不限制, mpm_winnt上的默認值就是0.
官方參考手冊中不建議設置為0, 主要基於兩點考慮:
(1)
可以防止(偶然的)內存泄漏無限進行,從而耗盡內存;
(2)
給進程一個有限壽命,從而有助於當服務器負載減輕的時候減少活動進程的數量。

這個參數的值更大程度上取決於服務器的內存,如果內存比較大的話可以設置為0或很大的數字,否則設置一個小的數值。需要說明的是,如果這個值設置的太小的話會造成Apache頻繁重啟,在日志文件中會看到如下的文字:
Process exiting because it reached
MaxRequestsPerChild. Signaling the
parent

這樣一來降低了Apache的總體性能。

另外,可以通過查看Apache提供的server-status(狀態報告)來驗證當前所設置數值是否合理,在httpd.conf文件中做如下設置來打開它:

    * # 首先需要加載mod_status模塊
     LoadModule status_module
modules/mod_status.so
    * # 然后設置訪問的地址
     <Location
/server-status>
        
SetHandler server-status
         Order
deny,allow
         Deny
from all
         #
如果限制某個IP訪問則設置為 Allow from 192.168.0.1
         Allow
from all
    
</Location>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM