問題描述

我運行一個 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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。