2012-07-03 83 views
0

不能啓動超過1000個apache進程,但我們有一個非常強大的服務器(32核cpu,96GB RAM),並且Apache以prefork模式運行。我們apache2.conf文件包括這樣的設置:儘管maxclients和serverlimits設置爲3000

<IfModule mpm_prefork_module> 
    StartServers   2 
    MinSpareServers  5 
    MaxSpareServers  20 
    ServerLimit  3000 
    MaxClients   3000 
    MaxRequestsPerChild 1000 
</IfModule> 

的問題是,當我們的網站是在重負載下(當Apache進程數達到1000準確地說)(或設置StartServers的時候1000以後),凍結的Apache2和需要重新啓動。然而,仍然有很多內存,cpu使用不足,而且apache進程數量遠遠超出maxclients。

我的問題是,我該怎麼做才能讓apache到達conf文件中配置的maxclients?

請考慮我們已經與在/etc/security/limits.conf發揮到最大設置打開的文件和nprocs到5000(-a的ulimit顯示這些值以及考慮)。

沒有錯誤在/var/log/apache2/error.log

回答

0

Apache服務器顯示可能有在硬限制編譯。要改變它,你需要重新編譯你的網絡服務器。默認值是200000,應該足夠高 - 但是你的linux發行版中的軟件包可能會有所不同。

我寧願推薦從您的網絡服務器獲取靜態文件服務。把一個nginx或lighttp服務器放在你的apache前面。讓它提供靜態內容(圖像,CSS,JavaScript等)並將動態請求轉發給您的apache。

+0

感謝您的回答,順便說一句,您知道在編譯時更改變量的名稱嗎?爲了避免這個問題,我切換到mod worker + fpm + fast cgi,這限制了進程數量和增強的速度,減少了cpu和ram。 – christophe

相關問題