Apache-2.2

具有 mod_php 高記憶體使用率的 Apache

  • February 9, 2013

我們使用 mod_php 和 mysql 在 Apache 上部署了 Magento 應用程序。我觀察到有時 apache 伺服器開始消耗大量記憶體,這會導致記憶體交換並導致伺服器負載過高。每當 apache 伺服器上出現高負載時,導致高負載的 apache 程序在 mysql 端處於睡眠模式,在客戶端處於 CLOSE_WAIT 狀態。感謝您為解決此問題提供任何幫助。

@raj您可能會發現程序處於S狀態,因為它們正在等待由I/O綁定的另一個程序(處於D狀態),即。讓機器停止交換。

所以關鍵是解決兩個關鍵問題,標準記憶體分配和記憶體承諾。

執行 Magento 時,只需將 PHP Max 記憶體限制設置得太高,就很容易在 RAM 上大量過度送出。在正常情況下,它不會產生任何不良影響,但是當應用程序嘗試使用該記憶體時,它幾乎會立即進入交換狀態(如果你的 RAM 已經用完)。

然後,您可能會發現 Apache 不是記憶體使用的主要問題,而 MySQL 更可能是罪魁禍首。

您沒有提及您的伺服器規格或商店的任何具體細節,因此無法準確提供建議。但簡單地修改您的 Apache 和 MySQL 配置將是一個簡單的起點。刪除 Apache 執行緒數、MySQL 連接數、分配的記憶體承諾。然後開始使用像 Munin 這樣的工具繪製圖表,以真正能夠關聯流量、執行緒、CPU 使用率和記憶體使用率。不這樣做,你就是在盲目地工作。

但是我建議您不要再四處尋找 netstat 了,因為您需要診斷 TCP 狀態還有很長的路要走;你需要從頭開始。

引用自:https://serverfault.com/questions/389956