View Categories

WordPress 出現 500/502 錯誤,先查記憶體

< 1 分鐘閱讀

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

為什麼會這樣 #

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

怎麼處理 #

  1. 看紀錄:主機錯誤紀錄裡找 Allowed memory sizeMaximum execution time,或對照 502 發生時間點的 PHP 錯誤。
  2. 記憶體不足:wp-config.phpdefine('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. 主機規格不足時是換方案,不是調設定;調設定只會讓下一次爆得更晚一點。

我們實際遇過的情況 #

一家電商每天固定時段連續 fatal,紀錄顯示記憶體用盡,同時發現 WP_DEBUG 開在正式站、排程積了幾十個任務;先關 DEBUG、清排程,再找是哪支背景任務吃記憶體。一家電商忽然變很慢,主機紀錄顯示是爬蟲大量抓商品頁,在邊緣層擋掉後恢復。

一個站更新外掛時反覆 502,主機面板顯示記憶體不足導致更新做不完,提高記憶體並分批更新後完成。另一個文章站只有某個分類彙整頁固定 500,其他頁都正常,追到是該分類下某篇文章的內容讓外掛崩潰,修掉那篇即可。

什麼時候該找人 #

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

常見問題 #

Allowed memory size exhausted 要怎麼處理? #

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

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

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

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

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

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