Apache-2.2
試圖降低 apache 2 程序的數量
我在 Debian 6 LAMP 上使用 apache mpm_prefork
我有
Timeout 20 KeepAlive On MaxKeepAliveRequests 80 KeepAliveTimeout 2 <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 ServerLimit 500 MaxClients 500 MaxRequestsPerChild 1500 </IfModule>
配備 4GB 記憶體。問題是 Apache2 啟動了太多程序。每當我這樣做時,
top
我看到大部分時間只有 1 個執行,而 apache2 程序睡眠的數量隨著時間的推移而增長(現在有 437 個程序並且還在增加)我可以知道為什麼 apache2 會啟動新程序而不是使用已經打開的程序嗎?我怎麼能告訴apache不要打開這麼多程序?
謝謝
您告訴 Apache,您希望能夠同時為 500 個客戶端提供服務,並對客戶端程序池設置 500 個硬性限制。
當 Apache 收到請求時,它將開始擴展其程序池,直到接近您的限制。
因為您使用的是預分叉伺服器,所以每個程序只處理一個請求執行緒,因此 Apache 需要維護大量的休眠程序才能處理您指定的並發客戶端數量。這些會佔用大量記憶體。
您可以切換到執行緒 MPM 模型、降低 MaxClients 的值或增加 RAM 量。參見http://httpd.apache.org/docs/2.0/mod/prefork.html>和<http://httpd.apache.org/docs/2.0/mod/mpm_common.html。