目錄
快速答案:500 是網站程式或主機出錯的統稱,502 多是主機後端沒回應。最常見的根因是 PHP 記憶體用完(Allowed memory size exhausted)、排程任務積壓、爬蟲或外掛把主機資源吃光。先看錯誤紀錄,再調記憶體上限或找出吃資源的那一個。
為什麼會這樣 #
WordPress 每次載入都要跑全部啟用的外掛;外掛越多、頁面越複雜,記憶體用量越高。單次請求超過 PHP 的 memory_limit 就會 fatal,前台看到 500 或白畫面。502 則多半是 PHP 程序被塞滿或超時,例如大量爬蟲同時打商品頁、WP-Cron 積了幾十個任務一起跑、更新外掛時主機記憶體不夠。一台小主機跑幾十個站,本來就撐不住。
怎麼處理 #
- 看紀錄:主機錯誤紀錄裡找
Allowed memory size、Maximum execution time,或對照 502 發生時間點的 PHP 錯誤。 - 記憶體不足:
wp-config.php加define('WP_MEMORY_LIMIT', '256M');,主機的 PHP memory_limit 也要夠。調了還爆,代表有東西在漏,不是上限太低。 - 找出吃資源的:用 Query Monitor 看哪支外掛查詢最多;主機 access log 看是不是某個 IP 或機器人在狂抓;WooCommerce → 狀態 → 排程動作看有沒有大量失敗或待處理任務。
- 爬蟲:在 Cloudflare 或主機防火牆對異常的 UA 或 IP 限速,robots.txt 對無用的參數網址 Disallow。
- 更新時 502:一次更新一支,別全選;頁面編輯器、課程系統這種大外掛先在 staging 跑。
- 主機規格不足時是換方案,不是調設定;調設定只會讓下一次爆得更晚一點。
我們實際遇過的情況 #
一家電商每天固定時段連續 fatal,紀錄顯示記憶體用盡,同時發現 WP_DEBUG 開在正式站、排程積了幾十個任務;先關 DEBUG、清排程,再找是哪支背景任務吃記憶體。一家電商忽然變很慢,主機紀錄顯示是爬蟲大量抓商品頁,在邊緣層擋掉後恢復。
一個站更新外掛時反覆 502,主機面板顯示記憶體不足導致更新做不完,提高記憶體並分批更新後完成。另一個文章站只有某個分類彙整頁固定 500,其他頁都正常,追到是該分類下某篇文章的內容讓外掛崩潰,修掉那篇即可。
什麼時候該找人 #
502 持續超過幾分鐘、主機面板顯示 CPU 或記憶體長期滿載、紀錄裡出現資料庫連線錯誤——這多半是主機層問題,要跟主機商一起看。若同時發現不明檔案或流量來源異常,先當資安事件處理。
WPTOOLBEAR網站工具熊