PHP Opcache Nedir? Kurulum, Ayarlar ve Performans İpuçları - Corelux
PHP Opcache Nedir? Kurulum, Ayarlar ve Performans İpuçları
Son Güncelleme: Mart 2026
PHP Opcache, PHP kodunun derlendikten sonra oluşan ara (opcode) çıktısını önbellekte tutarak tekrar derleme maliyetini ortadan kaldıran bir performans bileşenidir. Bu makalede opcache kurulumu, kritik opcache ayarları, izleme yöntemleri ve gerçek dünya optimizasyon senaryoları adım adım anlatılacaktır.
İçindekiler
- Opcache Nedir?
- Nasıl Çalışır?
- Kurulum ve Etkinleştirme
- Önemli Opcache Ayarları
- İzleme ve Metrikler
- Optimizasyon Senaryoları ve İpuçları
- Uyumsuzluklar ve Kararlar
- Sıkça Sorulan Sorular
- Sonuç
Opcache Nedir?
Opcache, PHP yorumlayıcısının (interpreter) her istekte PHP dosyalarını tekrar tekrar derlemesini engelleyen bir opcode önbellek (bytecode cache) çözümüdür. PHP kodu ilk çalıştırıldığında derlenir ve oluşturulan opcode bellekte saklanır; sonraki isteklerde aynı dosya için derleme atlanır, böylece CPU ve G/Ç maliyeti azalır, uygulama tepki süreleri hızlanır.
Nasıl Çalışır?
Çalışma mantığı şu adımlardan oluşur:
- İlk Yükleme: PHP dosyası yorumlanır ve opcode (ara kod) üretilir.
- Önbellekleme: Üretilen opcode Opcache tarafından bellekte saklanır.
- Tekrar Kullanım: Aynı dosyaya yapılan sonraki isteklerde opcode doğrudan bellekten alınır, derleme atlanır.
Not: Geliştirme aşamasında dosya değişikliklerinin hemen görülmesi için opsiyonlar mevcuttur; üretimde ise dosya değişikliklerinin kontrollü dağıtımı (deploy) şiddetle önerilir.
Kurulum ve Etkinleştirme
Modern PHP sürümlerinde (PHP 5.5+ ve üstü) Opcache genellikle çekirdek (built-in) olarak gelir. Yine de kontrol edilmesi gerekenler:
- PHP Sürümü: PHP 7.4/8.x sürümlerinde Opcache daha kararlı ve performanslıdır.
- İşletim Sistemi: Ubuntu, CentOS, Debian gibi Linux dağıtımlarında PHP paket yöneticisi ile birlikte gelir veya paket olarak eklenebilir.
- Web Sunucu: PHP-FPM, Apache mod_php veya diğer çalıştırma ortamlarıyla uyumludur.
Örnek kurulum komutları (kısa özet, ortamınıza göre uyarlayın):
- Ubuntu/Debian: apt ile php-opcache veya php7.x-opcache paketini yükleyin.
- CentOS/RHEL: yum/dnf ile php-opcache veya ilgili php paketi üzerinden etkinleştirin.
Kurulum sonrası php.ini veya conf.d dizinindeki opcache.ini dosyasında ayarları kontrol edin ve PHP-FPM/Apache servislerini yeniden başlatın.
Önemli Opcache Ayarları
Aşağıdaki php.ini (veya opcache.ini) direktifleri uygulama performansı üzerinde doğrudan etkilidir. Önerilen değerler genel üretim sunucuları için başlangıç noktasıdır; iş yükünüze göre ayarlayın.
| Direktif | Açıklama | Önerilen Değer (örnek) |
|---|---|---|
| opcache.enable | Opcache'in etkinleştirilmesi. | 1 |
| opcache.memory_consumption | Opcode için ayrılan bellek (MB). | 128 veya 256 |
| opcache.max_accelerated_files | Aynı anda önbellekte tutulacak dosya sayısı. | 10000 - 20000 |
| opcache.validate_timestamps | Dosya değişikliklerini kontrol etme (geliştirme için 1, üretim için 0 önerilir). | 0 (üretim) |
| opcache.revalidate_freq | Dosya zaman damgası kontrol sıklığı (saniye). | 60 |
| opcache.interned_strings_buffer | Dahili (interned) stringler için ayrılan bellek (MB). | 8 - 16 |
| opcache.fast_shutdown | Hızlı shutdown işlemleri için optimizasyon. | 1 |
| opcache.enable_cli | Komut satırı (CLI) için Opcache etkinliği. | 0 (CI/CD scriptleri için 1 gerekebilir) |
İpucu: Bellek yetersizliği nedeniyle dosyalar dışarı atılıyorsa (cache full) opcache.memory_consumption ve max_accelerated_files değerlerini artırın.
İzleme ve Metrikler
Opcache durumunu izlemek için şu yöntemleri kullanabilirsiniz:
- opcache_get_status: PHP fonksiyonu ile direkt istatistik alınabilir (hits, misses, memory_usage, blacklist_stats vb.).
- Web arayüzleri: Üçüncü taraf paketler (ör: opcache-gui) ile görselleştirme yapılabilir.
- Monitoring: Prometheus, Grafana veya Zabbix ile özel metrik toplayarak uyarı kuralları oluşturun.
Metriklerde dikkat edilmesi gerekenler:
- Hit Rate: Yüksek olması istenir; düşükse cache miss sebeplerini araştırın.
- Memory Usage: Cache doluluk oranı sık kontrol edilmelidir.
- Invalidate/Reset Sıklığı: Sık reset/clear işlemleri performansı bozar.
Optimizasyon Senaryoları ve İpuçları
Gerçek dünyada farklı uygulama tipleri için öneriler:
- WordPress: Çok sayıda küçük dosya ve plugin kullanan WordPress için opcache.memory_consumption artırılmalı, validate_timestamps üretimde kapatılmalı ve dağıtımlarda dikkatli planlama yapılmalıdır.
- Laravel: Laravel gibi frameworklerde bytecode cache çok fayda sağlar; config/cache ve route cache ile birlikte kullanıldığında tepki süresi daha da iyileşir.
- Yoğun Trafik API'ler: Sabit kodlı endpoint'ler için opcache kritik; hot code paths (sıcak kod yolları) optimize edilmelidir.
- CI/CD ve Deploy: Deploy sırasında yeniden yükleme stratejileri: önce yeni kodu isteğe açmadan önce önbelleği reset etmek (opcache_reset) veya timestamp kontrollü revalidate_freq ile kontrollü geçiş.
Örnek Dağıtım Akışı:
- Staging Test: Yeni sürüm staging'de test edilir.
- Cache Pre-warm: Yeni sürüm prod ortamına geçmeden önce önbellek warmup scriptleri çalıştırılır (tüm önemli URL'leri çağırma).
- Switch: Trafik yeni sürüme alındıktan sonra eski cache temizlenir gerekirse opcache_reset ile.
Uyumsuzluklar ve Kararlar
Opcache kullanırken karşılaşılabilecek sorunlar ve çözümleri:
- Geliştirme Ortamı: Hızlı kod değişimleri için opcache.validate_timestamps=1 ve revalidate_freq düşük tutulmalı. Alternatif olarak CLI için opcache devre dışı bırakılabilir.
- Opcode ve OPCache Reset: opcache_reset tüm kullanıcılar için anlık flush yapar; yüksek trafikli sunucularda dikkatli kullanın.
- Opcode ve Opcode Uyumsuzluğu: PHP sürüm değişikliklerinde veya extension değişikliklerinde opcache'in eski bytecode'ları bellekten temizlenmelidir.
- APCu ile Karşılaştırma: Opcache opcode (derlenmiş kod) önbelleği, APCu ise uygulama verisi (user cache) içindir. İkisi birlikte kullanılabilir.
Sıkça Sorulan Sorular
Opcache nedir ve neden gereklidir?
Opcache, PHP kodunu derledikten sonra oluşan opcode çıktısını bellek üzerinde saklayarak tekrar derleme maliyetini ortadan kaldırır; böylece CPU kullanımını düşürür ve yanıt sürelerini iyileştirir.
Geliştirme ortamında opcache nasıl yönetilmeli?
Geliştirmede opcache.validate_timestamps=1 ve opcache.revalidate_freq düşük tutulmalıdır. Hızlı test için opcache.enable_cli=1 ile bazı CLI scriptleri cache’den faydalanabilir; ancak sık değişen kodlar için test sırasında opcache devre dışı bırakılabilir.
opcache.memory_consumption değerini nasıl belirlerim?
Uygulamanızdaki toplam PHP dosya sayısı ve büyüklüğüne göre karar verin. İlk adım olarak 128 MB deneyin; cache doluuyorsa 256 MB veya daha fazla artırın. İzleme verileri (memory_usage) bu kararı destekleyecektir.
opcache.validate_timestamps=0 güvenli mi?
Üretim ortamlarında genellikle önerilir çünkü dosya zaman damgası kontrolü opsiyonel olarak kapatıldığında performans artışı olur. Ancak kod güncellemelerinde kontrolü manuel olarak yürütmeli veya deploy sonrası opcache reset işlemi yapmalısınız.
Opcache ile birlikte başka hangi optimizasyonlar uygulanmalı?
PHP-FPM ayarları, HTTP cache (ör: Varnish/Proxy), CDN entegrasyonu ve uygulama katmanında cache (APCu, Redis) ile birlikte kullanıldığında en iyi sonuç alınır. Ayrıca kod seviyesinde autoloading ve opcache-friendly yapılandırma (az sayıda include/require) önemlidir.
Sonuç
Özetle, Opcache PHP uygulamalarının performansını ciddi oranda artırabilen düşük maliyetli bir optimizasyon yöntemidir. Doğru kurulum, uygun php.ini ayarları ve düzenli izleme ile uygulamanızın tepki süresi ve kaynak kullanımı iyileşir. Dağıtım süreçlerinde ise kontrollü cache invalidation ve önbellek warmup stratejileri kullanmak kesintisiz performans sağlar.
Corelux üzerinde Türkiye VPS veya Linux Hosting hizmetlerimizde PHP Opcache ile yüksek performanslı sunucu konfigürasyonu için destek alabilirsiniz. SSL ve güvenlik ihtiyaçlarınız için SSL Sertifikası hizmetimiz de mevcuttur.
Her ortam farklıdır; isterseniz sunucunuzun mevcut opcache ayarlarını birlikte inceleyip, uygulamanıza özel öneriler hazırlayabilirim.
Yazar
Boran BAR