PHP-FPM ve OPcache nedir, ne işe yarar?
PHP, web sunucusunda her çağrıldığında dinamik olarak derlenen (interpret edilen) bir dildir. OPcache, derlenmiş PHP kodunu (opcode) sunucu belleğinde (RAM) saklayarak, sonraki isteklerde kodun tekrar tekrar derlenmesini önler. Bu da sayfa açılış sürelerini milisaniyeler seviyesine düşürür.
**PHP-FPM** (FastCGI Process Manager) ise PHP isteklerini ayrı bir proses olarak yöneten, yüksek yüklü web siteleri için geliştirilmiş kararlı ve hızlı bir PHP yönetim modülüdür. PHP-FPM ve OPcache ikilisi, WordPress hosting ve özel PHP projelerinde CPU kullanımını düşürmek ve yanıt sürelerini iyileştirmek için en etkili optimizasyon yöntemidir.
OPcache kurulumu ve yapılandırması
OPcache genellikle modern PHP sürümleriyle (PHP 7.4, 8.0, 8.1, 8.2 vb.) birlikte kurulu gelir. Aktif etmek ve yapılandırmak için `php.ini` dosyasını düzenlemelisiniz:
# php.ini dosyasını açın (PHP sürümünüze göre yol değişebilir)
nano /etc/php.ini
Dosyada `[opcache]` bölümünü bulun ve aşağıdaki değerleri uygulayın:
opcache.enable = 1
opcache.memory_consumption = 128 # RAM miktarına göre artırılabilir (Örn: 256)
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 2 # Geliştirme aşamasında 0, canlıda 2-60 arası uygundur
opcache.fast_shutdown = 1
PHP-FPM süreç limitlerini optimize etme
PHP-FPM'in sunucu kaynaklarını doğru kullanabilmesi için havuz (pool) ayarlarını düzenlemeliyiz. Havuz yapılandırma dosyaları genellikle `/etc/php-fpm.d/www.conf` adresinde yer alır:
nano /etc/php-fpm.d/www.conf
Sunucunuzun RAM miktarına göre şu parametreleri güncelleyin:
pm = dynamic(Süreçlerin dinamik olarak artıp azalmasını sağlar).pm.max_children: Sunucunuzun kullanabileceği maksimum PHP-FPM proses sayısı. (Örn: 4 GB RAM'li bir sunucu için 20-30 arası ayarlanabilir).pm.start_servers: Sunucu başladığında aktif olacak proses sayısı (Örn: 5).pm.max_requests: Bellek sızıntılarını önlemek için bir prosesin kapatılmadan önce yanıtlayacağı maksimum istek sayısı (Örn: 500).
Ayarlardan sonra PHP-FPM ve web sunucunuzu yeniden başlatın:
systemctl restart php-fpm
systemctl restart nginx # Veya httpd / apache2
Sık sorulan sorular
OPcache aktif olduktan sonra yaptığım kod değişiklikleri görünmüyor?
OPcache derlenmiş dosyaları bellekte tuttuğu için güncellediğiniz PHP kodları hemen yansımayabilir. `opcache.revalidate_freq` süresini bekleyebilir veya PHP-FPM servisini yeniden başlatarak belleği temizleyebilirsiniz.
OPcache bellek tüketimi sunucuyu yorar mı?
Hayır, OPcache'e ayırdığınız bellek (Örn: 128 MB RAM) sunucunun genel bellek tüketiminin yanında çok küçük kalır ancak kazandırdığı hız avantajı oldukça büyüktür.