format_list_bulletedBu İçerikte Bahsedilen Konular
- arrow_rightPHP OPcache Nedir ve Performans İçin Neden Önemlidir?
- arrow_rightOPcache'in Çalışma Prensibi
- arrow_rightOPcache Yapılandırma Dosyası
- arrow_rightTemel OPcache Ayarları
- arrow_rightBellek Yapılandırması
- arrow_rightİnterned Strings Buffer
- arrow_rightMaksimum Hızlandırılmış Dosya Sayısı
- arrow_rightOPcache Performans Karşılaştırması
- arrow_rightOPcache İzleme ve Yönetimi
- arrow_rightOPcache Durumunu Kontrol Etme
- arrow_rightÖnbellek Temizleme
- arrow_rightGelişmiş OPcache Yapılandırma İpuçları
- arrow_rightPreloading (Önyükleme)
- arrow_rightOptimizasyon Seviyeleri
- arrow_rightHata Ayıklama Modu
- arrow_rightYaygın OPcache Hataları ve Çözümleri
- arrow_rightBeyaz Ekran Hatası
- arrow_rightÖnbellek Doluluğu Uyarısı
- arrow_rightUyumsuz Uzantı Sorunları
- arrow_rightOPcache ve Diğer Performans Optimizasyonları
- arrow_rightSonuç ve Öneriler
PHP OPcache Nedir ve Performans İçin Neden Önemlidir?
PHP OPcache, PHP 5.5 ile birlikte entegre edilen bir bytecode önbellek mekanizmasıdır. Geleneksel PHP çalışma modelinde, her istek geldiğinde sunucu PHP dosyalarını diskten okur, derler ve çalıştırır. Bu süreç, özellikle büyük uygulamalarda ciddi performans kayıplarına neden olur. OPcache, derlenmiş PHP kodunu bellekte saklayarak tekrarlayan derleme işlemini ortadan kaldırır ve uygulama hızını önemli ölçüde artırır.
Wikipedia ve resmi PHP dokumentasyonuna göre, OPcache kullanımı sayesinde PHP uygulamaları 2 ila 10 kat arasında performans artışı gösterebilir. Bu durum, özellikle e-ticaret siteleri ve yüksek trafikli web uygulamaları için kritik öneme sahiptir.
OPcache'in Çalışma Prensibi
PHP kodunun çalışma süreci üç ana aşamadan oluşur: lexing (sözcük analizi), parsing (ayrıştırma) ve compile (derleme). OPcache, derleme aşamasını tamamen atlayarak önceden derlenmiş kodu doğrudan kullanır. Bu sayede:
- CPU kullanımı %30-50 oranında azalır
- Sayfa yükleme süreleri milisaniye düzeyinde düşer
- Sunucu kaynakları daha verimli kullanılır
- Bulut sunucu maliyetleri düşer
OPcache Yapılandırma Dosyası
PHP OPcache ayarları genellikle php.ini dosyası içinde yapılandırılır. Ubuntu ve CentOS sistemlerde bu dosya /etc/php/VERSION/apache2/php.ini veya /etc/php.ini yolunda bulunur. Nginx kullanıyorsanız, FPM yapılandırmanızı kontrol etmeniz gerekir.
Temel OPcache Ayarları
Aşağıdaki parametreler, OPcache'in temel çalışmasını kontrol eder:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.fast_shutdown=1
Bellek Yapılandırması
opcache.memory_consumption parametresi, önbellek için ayrılacak RAM miktarını belirler. WordPress gibi orta ölçekli uygulamalar için 128MB yeterli olabilirken, büyük Laravel veya Symfony uygulamaları için 256-512MB önerilir. Sanallaştırma ortamlarında bu değeri sistem RAM'inin %20-25'i olarak ayarlamanızı öneririz.
İnterned Strings Buffer
PHP, string değişkenleri için internal string pool kullanır. opcache.interned_strings_buffer parametresi bu pool için ayrılan bellek miktarını belirler. Varsayılan değer 4MB'tır ve genellikle 8-16MB arasına yükseltilmesi önerilir.
Maksimum Hızlandırılmış Dosya Sayısı
opcache.max_accelerated_files, önbellekte tutulacak dosya sayısını belirler. Değer olarak 200 ile 100000 arasında bir rakam girilebilir. WordPress için 4000, Laravel için 10000 değeri idealdir. Bu değeri çok düşük tutarsanız, sık kullanılan dosyalar önbellekten düşebilir.
OPcache Performans Karşılaştırması
| Senaryo | OPcache Kapalı | OPcache Açık | İyileştirme |
|---|---|---|---|
| Bir sayfa yükleme süresi | 320ms | 45ms | %86 hız artışı |
| CPU kullanımı (eşzamanlı 100 istek) | %78 | %23 | %70 azalma |
| Bir istek başına bellek | 18MB | 12MB | %33 azalma |
| Saniyedeki istek sayısı (RPS) | 45 | 310 | %588 artış |
Bu veriler, tipik bir WordPress sitesinde yapılan benchmark testlerinden elde edilmiştir. Sonuçlar, donanım yapılandırmasına ve uygulama türüne göre değişiklik gösterebilir.
OPcache İzleme ve Yönetimi
OPcache Durumunu Kontrol Etme
OPcache'in çalışıp çalışmadığını ve performans istatistiklerini görüntülemek için aşağıdaki PHP kodunu kullanabilirsiniz:
<?php
echo "<pre>";
print_r(opcache_get_status(true));
echo "</pre>";
Önbellek Temizleme
Geliştirme sürecinde veya kod güncellemelerinde OPcache'i temizlemeniz gerekebilir. Bunun için:
- PHP-FPM kullanıyorsanız:
sudo systemctl restart php-fpm - Apache kullanıyorsanız:
sudo systemctl restart apache2 - Programatik olarak:
opcache_reset();
Üretim ortamında otomatik temizlik için opcache.revalidate_freq ve opcache.validate_timestamps ayarlarını yapılandırmanızı öneririz.
Gelişmiş OPcache Yapılandırma İpuçları
Preloading (Önyükleme)
PHP 7.4 ile birlikte gelen preloading özelliği, uygulama başlamadan önce sık kullanılan dosyaları belleğe yükler. Bu özellik, özellikle Laravel ve Symfony gibi framework'lerde çok etkilidir:
opcache.preload=/var/www/html/preload.php
opcache.preload_refresh=1
<?php
// preload.php
$files = [
'/var/www/html/vendor/autoload.php',
'/var/www/html/bootstrap/app.php',
];
foreach ($files as $file) {
if (file_exists($file)) {
opcache_compile_file($file);
}
}
Optimizasyon Seviyeleri
opcache.optimization_level parametresi, derleme sırasında uygulanacak optimizasyon passes'larını belirler. Varsayılan değer (0x7FFFBFFF) tüm optimizasyonları etkinleştirir. Çoğu durumda bu değeri değiştirmeniz gerekmez.
Hata Ayıklama Modu
Geliştirme ortamında OPcache'in neden olduğu sorunları tespit etmek için opcache.enable_cli ve opcache.log_verbosity_level parametrelerini kullanabilirsiniz:
opcache.enable_cli=1
opcache.log_verbosity_level=2
Yaygın OPcache Hataları ve Çözümleri
Beyaz Ekran Hatası
Bu hata genellikle önbelleğe alınmış hatalı koddan kaynaklanır. Çözüm için opcache.revalidate_freq=0 ve opcache.validate_timestamps=1 ayarlarını yaparak her istekte dosya değişikliğini kontrol edin.
Önbellek Doluluğu Uyarısı
opcache_get_status() çıktısında "opcache_full" uyarısı görüyorsanız, memory_consumption değerini artırmanız veya max_accelerated_files parametresini azaltmanız gerekir.
Uyumsuz Uzantı Sorunları
Bazı eski PHP uzantıları OPcache ile uyumsuz olabilir. Bu durumda uzantıları güncellemeniz veya opcache.enable=0 ile devre dışı bırakmanız gerekebilir.
OPcache ve Diğer Performans Optimizasyonları
OPcache tek başına yeterli değildir. Kapsamlı bir performans stratejisi için diğer optimizasyon tekniklerini de uygulamanızı öneririz:
- Görsel optimizasyonu ile sayfa yükünü hızlandırın
- Nginx Proxy Manager ile ters proxy yapılandırın
- Swap alanını doğru boyutlandırın
- Güvenlik duvarı yapılandırması ile sunucu güvenliğini sağlayın
Sonuç ve Öneriler
PHP OPcache, doğru yapılandırıldığında uygulama performansını dramatik şekilde artıran güçlü bir araçtır. Production ortamı için önerilen temel yapılandırma:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=10000
opcache.revalidate_freq=2
opcache.validate_timestamps=1
opcache.fast_shutdown=1
opcache.enable_cli=0
Uygulamanızın performansını test etmek için sunucu hizmetlerimizi inceleyebilir veya ekibimizle iletişime geçebilirsiniz. OPcache yapılandırmanızı optimize ederek, kullanıcı deneyimini iyileştirebilir ve arama motoru sıralamalarında SEO avantajı elde edebilirsiniz.