在一台虛擬主機(VPS)上同時架設 10 個 WordPress 網站並不少見。只要 CPU、RAM、硬碟與 PHP-FPM 的設定合理,一台 VPS 完全可以同時服務多個網站。
不過,有一個很容易被忽略的設定,就是 PHP OPcache 的 opcache.memory_consumption。
如果 VPS 上有很多 WordPress 網站,而 OPcache 分配的記憶體太少,就可能導致 OPcache 不斷將舊的 PHP 程式碼清除,再重新編譯與快取。網站不一定會直接「掛掉」,但 PHP 執行效率可能下降,甚至造成 CPU 使用量增加、網站回應時間變長。
本文就來說明,當一台 VPS 上跑 10 個 WordPress,而 PHP-FPM 的 OPcache 太小時,實際上可能會發生什麼事情。
一、OPcache 是做什麼的?
WordPress 本身是以 PHP 撰寫,而 PHP 程式在執行時,需要先將 PHP 原始碼解析、編譯成可以執行的 opcode。
如果沒有 OPcache,PHP 每次處理請求時,都可能需要重新進行這些工作。
啟用 OPcache 後,PHP 可以將編譯完成的 opcode 放在共享記憶體中。
簡單來說:
沒有 OPcache:
WordPress PHP
↓
讀取 PHP 檔案
↓
解析 PHP
↓
編譯 opcode
↓
執行
有 OPcache:
WordPress PHP
↓
OPcache 已經有快取?
↓
有 → 直接使用 opcode
↓
執行
因此,OPcache 可以減少 PHP 重複解析與編譯程式碼的成本。
對 WordPress 這類由大量 PHP 檔案組成的網站來說,OPcache 通常相當重要。
二、OPcache 設太小會發生什麼?
這是最重要的部分。
如果 OPcache 的記憶體不足,可能會看到以下情況。
1. OPcache 不斷被塞滿
例如:
opcache.memory_consumption=128
而 10 個 WordPress 加起來需要更多的 OPcache 空間。
當 OPcache 接近滿載時,新的 PHP 程式碼仍然可能需要被加入快取。
這時候就可能出現快取淘汰(eviction)或重新快取的情況。
PHP 程式碼可能因為空間不足而被移出 OPcache:
WordPress A
WordPress B
WordPress C
...
WordPress J
↓
OPcache 空間不足
↓
部分 PHP opcode 被淘汰
↓
下一次請求重新編譯
這樣就會增加 PHP 的工作量。
因此可能出現:
CPU 使用量增加
↓
PHP 執行時間增加
↓
網站回應速度下降
2.可能看到 CPU 使用率變高
假設 VPS 原本:
CPU:20~30%
當 OPcache 空間不足,而且網站有大量 PHP 請求時,可能變成:
CPU:40~60%
甚至更高。
原因不是 WordPress 突然多做了什麼,而是 PHP 需要更頻繁地進行:
讀取 PHP
→ 解析
→ 編譯
→ 執行
而不是直接:
OPcache
→ 執行
如果 VPS 上同時有 10 個網站,這種情況可能被放大。
三、讓 Opcache-dashboard 來幫你
https://github.com/qcybb/opcache-dashboard-php8
Hits 通常會在 98-99%在右
Memory 如爆了要去加 opcache.memory_consumption
Keys 不足也要去加。opcache.max_accelerated_files

四、結論
一台 VPS 同時運行 10 個 WordPress 時,如果 PHP-FPM 共用的 OPcache 太小,最主要的問題通常不是「網站立刻掛掉」,而是:
OPcache 空間不足
↓
部分 PHP opcode 被淘汰
↓
Cache Miss 增加
↓
PHP 需要重新解析、編譯
↓
CPU 工作量增加
↓
PHP 回應時間可能增加
↓
網站效能下降
最後也要記住:
OPcache 不是越大越好,而是要大到足以讓常用的 PHP 程式碼穩定留在快取中,同時保留足夠 RAM 給 PHP-FPM、資料庫、Redis、Nginx 與作業系統。










