爲了更充分(fēn)合理地利用Apache服務器,我(wǒ)們都應該根據自己的實際需要對Apache的默認配置作出一(yī)些必要的調整。而針對Apache的優化配置過程中(zhōng),修改Apache的最大(dà)并發連接數就顯得尤爲重要。
操作系統
MPM模塊
描述
Windows
mpm_winnt
例如:windows2008 R2系統下(xià)使用Apache爲中(zhōng)間件時候
Unix/Linux
mpm_prefork
BeOS
mpm_beos
由Be公司開(kāi)發的一(yī)種多媒體(tǐ)操作系統,官方版已停止更新。
Netware
mpm_netware
由NOVELL公司推出的一(yī)種網絡操作系統
OS/2
mpmt_os2
一(yī)種最初由微軟和IBM共同開(kāi)發的操作系統,現由IBM單獨開(kāi)發(微軟放(fàng)棄OS/2,轉而開(kāi)發Windows)
1 :如果不确定具體(tǐ)的模式也可以首先查看apache的運行模式,查看命令:httpd -l
Compiled in modules:打開(kāi) apache2/conf/extra/httpd-mpm.conf ,每個機器可能httpd-mpm.conf 可能不同,這裏可以通過find 命令查詢。
3:以mpm_winnt模塊爲例說明,mpm_winnt模是專門針對Windows操作系統而優化設計的MPM模塊。它隻創建一(yī)個單獨的子進程,并在這個子進程中(zhōng)輪流産生(shēng)多個線程來處理請求。
MaxRequestsPerChild 100000
詳細補充說明:
ThreadsPerChild
這個參數用于設置每個進程的線程數
子進程在啓動時建立這些線程後就不再建立新的線程了,一(yī)方面因爲mpm_winnt不能啓動多個進程, 所以這個數值要足夠大(dà),以便可以處理可能的請求高峰,另一(yī)方面該參數以服務器的響應速度爲準的, 數目太大(dà)的反而會變慢(màn)。因此需要綜合均衡一(yī)個合理的數值。
mpm_winnt上的默認值是64, 最大(dà)值是1920.
這裏建議設置爲100-500之間,服務器性能高的話(huà)值大(dà)一(yī)些,反之值小(xiǎo)一(yī)些。
MaxRequestsPerChild
該參數表示每個子進程能夠處理的最大(dà)請求數,
即同時間内子進程數目.設置爲零表示不限制, mpm_winnt上的默認值就是0.
官方參考手冊中(zhōng)不建議設置爲0, 主要基于兩點考慮:
(1)
可以防止(偶然的)内存洩漏無限進行,從而耗盡内存;
(2)
給進程一(yī)個有限壽命,從而有助于當服務器負載減輕的時候減少活動進程的數量。
這個參數的值更大(dà)程度上取決于服務器的内存,如果内存比較大(dà)的話(huà)可以設置爲0或很大(dà)的數字,否則設置一(yī)個小(xiǎo)的數值。需要說明的是,如果這個值設置的太小(xiǎo)的話(huà)會造成Apache頻(pín)繁重啓,在日志(zhì)文件中(zhōng)會看到如下(xià)的文字:
Process exiting because it reached Process exiting because it reached MaxConnectionsPerChild. Signaling the parent to restart a new child process.
這樣一(yī)來apache就會重啓,降低了Apache的總體(tǐ)性能。
甚至嚴重時候出現錯誤日志(zhì)内容 Server ran out of threads to serve requests. Consider raising the ThreadsPerChild setting。這樣就會導緻重啓失敗,站點或服務器上的應用無法訪問了。