Belirti
Kod değişmeden sayfalar yavaşlar, PHP-FPM daha çok CPU kullanır, OPcache isabet oranı düşüktür. Aynı sunucudaki büyük WordPress ve Laravel siteleri önbelleği ilk dolduranlardır.
Kendiniz denetleyin
PHP-FPM'in kullandığı sınırları okuyun (CLI'ninkileri değil) ve o sürümdeki sitelerin PHP dosyalarını sayın:
grep -rhE 'opcache\.(memory_consumption|max_accelerated_files)' /etc/php/8.4/fpm/
find /home/*/ -name '*.php' | wc -l
Varsayılanlar 128 MB ve 10.000 dosyadır. Eklentili birkaç WordPress sitesi 10.000 dosyayı kolayca geçer. İsabet oranı PHP-FPM üzerinden çağrılan opcache_get_status() içindedir; CLI'nin kendi önbelleği vardır.
Nasıl oluyor
Yönettiğimiz bir sunucuda PHP-FPM varsayılanlarla, 128 MB ve 10.000 dosyayla çalışıyordu. Önbellek doluydu, isabet oranı %43'tü ve bir WordPress sayfası 3,7 saniye sürüyordu. Aşağıdaki değişiklikten sonra yaklaşık bir saniyeye indi.
Düzeltme
Yeni değerleri FPM conf.d klasöründe kendi dosyalarına yazın; böylece bir paket güncellemesi onları ezmez:
; /etc/php/8.4/fpm/conf.d/99-opcache.ini
opcache.memory_consumption=384
opcache.max_accelerated_files=60000
opcache.interned_strings_buffer=32
sudo php-fpm8.4 -t && sudo systemctl reload php8.4-fpm
- Yeniden başlatmayın, yeniden yükleyin: reload süren isteklerin bitmesine izin verir.
- Boyutu tek siteye değil, o PHP sürümündeki bütün sitelere göre ayarlayın: önbelleği paylaşırlar.
- Önbelleği boşaltmak (OPcache sıfırlama) düzeltme değildir; yeniden dolar.
Hostio nasıl bulur
Tarama her PHP-FPM sürümünün ini dosyalarından opcache.memory_consumption ve opcache.max_accelerated_files değerlerini okur ve o sürümdeki sitelerin PHP dosyalarını sayar. Dosya sayısı yer sayısından fazlaysa ya da dosya başına yaklaşık 4 KB ile belleğe sığmıyorsa opcache_full uyarısını önerilen değerlerle açar: dosya sayısının %30 fazlası ve belleğin %25 fazlası.
PHP sayfasındaki Status canlı isabet oranını ve boş belleği her planda, salt okunur gösterir. Hostio php.ini dosyasını henüz sizin için düzenlemez.