問題描述

我們是兩個 Rackspace Cloud 服務器上的 running a WordPress multisite instance,一個 Web 和一個數據庫,目前有 30 個左右的站點。我把 Nginx 放在靜態資源的前面,Apache 處理所有動態請求。我還配置了 Memcached 為數據庫和 APC 操作代碼緩存為 PHP 。 W3 默認情況下,我們擁有的所有網站都默認啓用總緩存。

一個問題是快速惡化:Apache 進程的重量在 80 到 120 MB 之間。網絡服務器具有 2 GB 的內存,這意味着我得到 15 個左右的進程,直到事情發生。這些過程顯然不應該是那麼大,但我對於他們為什麼感到困惑。

什麼是確定發生什麼的好策略?

提前致謝!

更新 10/2/10:對於那些想知道的問題,解決內存問題的問題是禁用 PHP xdebug(無意中啓用配置並導致隨機內存使用率峯值) 。

最佳解決方案

你談論的 apache 進程內存量 (每個進程 80 到 120 MB) 可以分為兩個原因。

  1. 阿帕奇

  2. WordPress 的

Apache

您可以通過僅加載所需的模塊數量和其他優化調整來優化 apache,從而減少內存。如果還沒有優化,請給它一些調整。

WordPress

WordPress 只是消耗大量的內存,並沒有很好的優化。我將從更正確地實現的東西替換數據庫類開始。這應該獲得更多的速度,並減少內存使用量很多。旁邊,我沒有那麼多建議。沒有使用 Worpdress 不被認為是有幫助的我猜。

Strategies

要了解發生了什麼,您需要跟蹤一個 wordpress 請求佔用多少內存。有一個獲取峯值使用功能 (memory_get_peak_usage()),您可以用來監視 worpdress 內存使用情況。如果它接近你寫的 80 – 120 MB,你知道 wordpress 正在創造你的頭痛。您可能需要記錄 time-stamp,峯值內存,執行時間和請求的 URI 。

使用 Nginx 服務緩存的 wordpress 頁面絕對會幫助你,因為它會阻止 wordpress 加載 – 即使是那些你所使用的那些”inbound” 緩存。它們在概念上被破壞,因為它們是一個 wordpress 插件,所以即使對於緩存的結果,還需要加載 wordpress 的至少一部分。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。