問題描述
我們是兩個 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) 可以分為兩個原因。
-
阿帕奇
-
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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。