瀏覽分類

WordPress 500/502 錯誤先查記憶體

快速答案:500 是網站程式或主機出錯的統稱,502 多是主機後端沒回應。最常見的根因是 PHP 記憶體用完(Allowed memory size exhausted)、排程任務積壓、爬蟲或外掛把主機資源吃光。先看錯誤紀錄,再調記憶體上限或找出吃資源的那一個。

為什麼會這樣 #

WordPress 每次載入都要跑全部啟用的外掛;外掛越多、頁面越複雜,記憶體用量越高。單次請求超過 PHP 的 memory_limit 就會 fatal,前台看到 500 或白畫面。502 則多半是 PHP 程序被塞滿或超時,例如大量爬蟲同時打商品頁、WP-Cron 積了一堆任務一起跑、更新外掛時主機記憶體不夠。主機規格跟站台的規模不成比例時,本來就撐不住。

怎麼處理 #

  1. 看紀錄:主機錯誤紀錄裡找 Allowed memory size、Maximum execution time,或對照 502 發生時間點的 PHP 錯誤。
  2. 記憶體不足:wp-config.php 加 define('WP_MEMORY_LIMIT', '256M');,主機的 PHP memory_limit 也要夠。調了還爆,代表有東西在漏,不是上限太低。
  3. 找出吃資源的:用 Query Monitor 看哪支外掛查詢最多;主機 access log 看是不是某個 IP 或機器人在狂抓;WooCommerce → 狀態 → 排程動作看有沒有大量失敗或待處理任務。
  4. 爬蟲:在 Cloudflare 或主機防火牆對異常的 UA 或 IP 限速,robots.txt 對無用的參數網址 Disallow。
  5. 更新時 502:一次更新一支,別全選;頁面編輯器、課程系統這種大外掛先在 staging 跑。
  6. 主機規格不足時是換方案,不是調設定;調設定只會讓下一次爆得更晚一點。

我們實際遇過的情況 #

一個剛接手的企業官網第一次完整健檢,就看到記憶體耗盡每天重複發生,同時 WP_DEBUG 開在正式站、排程任務積壓;處理順序是先關掉除錯模式、清排程,再找是哪支背景任務吃記憶體。一家電商的商店頁常常吃滿主機,查存取紀錄是大量機器人在打「加入購物車」與商品列表的參數網址,其中一種參數會一次載入全部商品、當場記憶體不足;擋掉那些請求、再把參數網址寫進 robots.txt,主機負擔才降下來。

一個站更新外掛時反覆報錯,主機面板顯示記憶體不足、更新跑不完,得先處理記憶體再分批更新。前面那個剛接手的官網還有另一種:網站地圖一次列上千篇文章就記憶體不足回 500,改成每頁少一點才正常;同一站也有十幾篇文章因為內容裡的區塊標記不成對,單獨開就是 500。

什麼時候該找人 #

502 持續超過幾分鐘、主機面板顯示 CPU 或記憶體長期滿載、紀錄裡出現資料庫連線錯誤——這多半是主機層問題,要跟主機商一起看。若同時發現不明檔案或流量來源異常,先當資安事件處理。

常見問題 #

Allowed memory size exhausted 要怎麼處理? #

wp-config.php 加 WP_MEMORY_LIMIT 256M,主機的 PHP memory_limit 也要夠;調了還爆代表有外掛在漏,要找出來。

網站忽然變很慢或 502,可能是爬蟲嗎? #

很常見。看主機 access log 是否某個 IP 或機器人大量抓頁面,在 Cloudflare 或防火牆限速就能恢復。

更新外掛時出現 502 怎麼辦? #

一次更新一支、別全選;大外掛先在 staging 跑。主機面板顯示記憶體不足時要先提高記憶體再更新。

網站現在打不開?網站救援當日受理。先看體質:免費健檢。