問題描述

我執行一個 WordPress 網站,大約有 70 個活躍的外掛。

經常,我會在/wp-admin/頁面上找到一個隨機的錯誤頁面 (“Not Found”,雖然我沒有檢查標題看是否是 404) 。

只需再次嘗試解決錯誤,但是如果在外掛升級期間發生錯誤 (因為 auto-reactivation 失敗),這是非常不方便的。我認為這個同樣的問題對我的儀錶板有時不能載入的某些模組負責。

鑑於 list of plugins I have installed,有沒有人知道任何可能導致此問題的問題?

編輯:

主機資訊:DreamHost; 我認為伺服器執行一個使用 Apache httpd 的自定義 Debian 構建

最佳解決方案

我整天都在遇到問題,似乎是 404 錯誤。

無論如何,我剛剛完成了一個夢幻技術支援人員的聊天,他告訴我,我擁有的使用者帳戶正在達到程式記憶體資源限制 (所有程式),這是導致奇怪的,似乎是 htaccess-related 問題的原因。我正在從 htaccess 檔案中間斷地發現 404 錯誤,不應該被呼叫!這是一個夢幻屋與一個鬼屋的伺服器。

顯然,夢想主機使用的過程殺宕機器人會在中間殺死一個網路程式,然後由於某種原因,(現在的殭屍)apache 實際上試圖完成其工作 (盡力從乾淨的出口退出一個子請求是我最好的猜測) 。它會在主要的 HTTP 日誌中引發一個 500 錯誤,但是在這樣做之後,它實際上觸發了重寫條件,並且不應該被觸發的規則 (使用上面的標準檔案-f 和目錄-d htaccess 檔案) – 並且它沒有不要寫一個新的日誌條目!一個新的 (不可見的人) 請求然後觸發 htaccess 檔案最後一行的索引檔案

注意 dreamhost 基本帳號的資源限制!如果你超過了極限,而且你與 mod_rewrite 線條一樣,你會看到奇怪的東西,只適合萬聖夜 – 隱形的男人,困擾了 404s!不死生物過程!殭屍 apache! htaccess 自己動手!哎呀!

希望這可以幫助你避免幾個小時的痛苦。

次佳解決方案

除錯的唯一方法是一次停用一個外掛,每次嘗試在停用另一個外掛之前重現問題。從與 WP 的管理有任何關係的外掛開始,然後向下移動到常規主題外掛,小工具等。

檢查您更好地服務的”Not Found” 頁面 (使用 Opera 瀏覽並開啟將顯示標題的資訊面板,或者使用 Firefox 瀏覽並啟用”Net” 面板的 Firebug),並透過所有外掛進行搜尋,以檢視是否他們可能直接服務。如果沒有,請檢視 Web 伺服器的日誌,找出無法提供的確切資源; 一個外掛可能正在做一些花哨的重定向或重寫,所以它不一定是您在瀏覽器中看到導致 404 的 URL 。

第三種解決方案

我只能相關我自己的經驗,到目前為止,我還沒有找到一個”definite” 規則來解決所有問題。

DreamHost 設定的主要問題是,在將記憶體消耗保持在最低限度的永恆的戰鬥中,這意味著擺脫儘可能多的功能 – 即所有這些將減少頻寬 (對訪問者有好處) 或 CPU(好對於伺服器,但 DreamHost 不會像控制 RAM 那樣積極地控制 CPU 消耗) 。例如,這意味著擺脫 gzip 的 HTML + CSS(將消耗 CPU + RAM) 或任何幾個 Minify 外掛 (也將消耗 RAM) 。快取越複雜 (我喜歡使用 W3 Total Cache,或至少 WP Super Cache),RAM 也將被消耗。

類似地,許多限制 MySQL 查詢數量以提高效能的外掛將消耗 RAM 。所以找到一個 trade-off,您仍然可以保持您的站點回復良好的效能,同時避免使用寶貴的 RAM 是一項艱鉅的任務!

到目前為止,我在繁忙網站上的最佳結果是取消選擇頁面速度最佳化和額外的網路安全,這顯然會消耗大量的記憶體,而是依賴與 W3 Total Cache 和 Cloudflare(免費的反向代理服務) 的組合。 Cloudflare 將有效地執行與 「額外 Web 安全」 模組相同的事情,但由於它執行在 DreamHost 之外,沒關係。 W3 Total Cache 消耗大量記憶體,但是一旦頁面被本地靜態儲存,Cloudflare 將非常有效地快取它們,所以您可以在編輯帖子時獲得 404/500,至少您的訪問者不會體驗它們 (Cloudflare 也可以提供靜態頁面即使 DreamHost 給出了 404 或 500) 。

另外,感謝 this article,我發現 FastCGI 比’normal’ CGI 使用更多的 RAM 。由於 PHP 5.3 更好地管理 RAM(更積極的垃圾回收,更少的記憶體洩漏),我已經實驗切換到 PHP 5.3 CGI(而不是 FastCGI),沒有頁面速度最佳化和額外的 Web 安全性,依靠 W3 Total Cache + Cloudflare 加速網站現在的後臺比較慢 (更多的 CPU 消耗!),但至少我看不到 404/500(到目前為止!) 。

我仍然不滿意的組合,所以我一定會繼續調整 DreamHost 的設定,希望能夠減少 RAM 功能,並且仍然獲得足夠的效能。像 @dgw 所說的,我也使用了很多外掛 – 因為我需要它們的功能。不是每個人用 DreamHost 託管 WP 都有簡單的部落格需求; 網站越複雜,需要的功能越多… 這就是 WordPress 的美麗,您只需要使用真正需要的外掛,並保持核心 WP 安裝簡單,如果你滿意的幾個需求。但是,外掛不一定是”bad” 或在網站上很重; 但這是真的,有些可能會消耗大量的 RAM …

第四種方案

這只是一個粗略的想法:如果您收到”real” 404 錯誤 (使用標題設定),則可以搜尋外掛並查詢 PHP header()函式和 404 號碼。這可以從 70 到更少的一些外掛的數量。那麼你只需要檢查那些。

這可以很容易地完成使用 IDE,如 Eclipse PDT,提供搜尋特定的 PHP 函式呼叫。

旁邊,但不保證它成功的工作,是寫一個外掛插入頭設定,然後給你跟蹤哪個程式碼實際上設定一個潛在的 404(回溯) 。這隻有在外掛使用 WordPress API 函式時才有效。尋找 PHP 功能的第一種方法將會工作,無論 WP API 如何。

參考文獻

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