向我解釋如何管理 ubuntu 9.04 apache2 程序
好吧,我在 ubuntu 9.04 vps 上執行的網站似乎經常崩潰,因為 apache 似乎沒有響應。
一個簡單的 apache 重啟解決了這個問題,但顯然每次發生這種情況時都必須手動重啟伺服器不是一個好的方案。
該站點是一個wordpress 站點,流量最少(每天最多200 位訪問者) 我還讓php 作為具有APC 記憶體設置的apache mod 執行。
我刪除了一些在伺服器上執行的程序,例如 clamav,它在一定程度上減少了記憶體使用量(伺服器有一半的 RAM)。
使用者報告在 apache 響應之前看到“記憶體不足”錯誤。
在伺服器上執行 top 命令現在顯示大約 50% 的記憶體使用情況。
apache 錯誤日誌也沒有顯示任何有趣的內容。
但執行 top 命令顯示有 4 個唯一的 apache2 實例正在執行 - 每個實例消耗大約 15% 的記憶體。cpu 為 0%
誰能解釋為什麼有 4 個單獨的 apache 程序正在執行以及如何正確管理這些程序?
謝謝大家。
和
但執行 top 命令顯示有 4 個唯一的 apache2 實例正在執行 - 每個實例消耗大約 15% 的記憶體。cpu 為 0%
您可能看到的是 Apache 及其子程序已準備好為請求提供服務。您很可能不必管理這些(除了確保您沒有定義太高的MaxClients,因此突然的流量高峰不會耗盡所有可用的 RAM 和其他資源)。
相反,您需要找出是什麼佔用了這麼多記憶體 - Apache 本身絕對不是最輕量級的 Web 伺服器,但它並沒有那麼重。最有可能導致 PHP 佔用大量記憶體的原因;也許您為 APC 定義了非常高的記憶體限制?
此外,在這種低流量的情況下,您確定您真的需要 APC 嗎?對我來說,RAM 似乎是伺服器中最薄弱的環節,因此去掉現在安裝的每個消耗 RAM 的擴展是有意義的。
這是我給你的建議:
- 在啟用 APC 的情況下對您的站點進行基準測試,例如使用siege - 它在 Ubuntu 儲存庫中可用,因此
apt-get install siege
應該安裝它。讓它執行一段時間,看看結果,看看圍攻是否擊落了你的 Apache。2)禁用APC,重複測試。如果結果與之前的結果相似或更好,並且/或 Apache 在此測試中倖存下來而沒有耗盡記憶體,請暫時讓您的伺服器不使用 APC。
如果你想嘗試完全不同的路線,lighttpd 和 fcgi 是一個更輕量級,也更可控的組合。在這種情況下,lighttpd 僅伺服器 http-requests 和 PHP 解析在 fcgi 後端完成。您可以定義有多少 fcgi 後端程序正在等待,因此即使流量突然激增也不會消耗更多 RAM,在最壞的情況下,它會使站點變慢或導致一些“500 伺服器太忙”錯誤,但您不不需要重新啟動任何東西。