İçeriğe geç
Hostio

Rehber · opcache_full

PHP OPcache dolu: sayfalar neden yavaşlar, boyut nasıl ayarlanır

OPcache derlenmiş PHP'yi bellekte tutar ve aynı PHP-FPM sürümündeki bütün siteler onu paylaşır. Dolduğunda sığmayan dosyalar her istekte yeniden derlenir.

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.

39 denetimin tamamı · Bütün rehberler

Ücretsiz sağlık taramasıyla başlayın.

Talivio'dan: TCSR A11yProof PrivaScan