2016-05-20 19 views
6

Yakında yayınlamak istediğimiz Laravel 5.1 tabanlı bir projemiz var. Sunucu kurulumunu optimize etmeye çalışıyoruz.Zend Opcache tüm dosyaları önbelleğe almıyor (CentOS 6.7 + Nginx 1.8.1 + PHP 7 + Laravel 5.1)

Başlıkta listelendiği gibi, bunu bir CentOS 6.7 sunucusunda, Nginx 1.8.1 ve PHP-FPM ile PHP 7 kullanarak dağıtıyoruz. CentOS 6.7'nin depoları PHP 7'yi sunmadığından, IUS'un yedek paketlerini kullanıyoruz.

Zend Opcache'nin etkin performansa ve çalışmaya devam etmesine rağmen (iyi bir isabet oranına sahibiz), performansımızın kötü olmasına neden olabilecek şeylerden biri, projemizdeki tüm dosyaları önbelleğe almıyor gibi görünüyor. . Önbelleğin içeriğini görselleştirmek için opcache-gui kullanıyoruz ve proje dosyalarının birçoğu (üçüncü parti kütüphanelerden dosyalar dahil) varken, ana kontrolcü ve destekleyici sınıfların birçoğu dahil olmak üzere çoğu kayıp var. Aslında, Opcache'yi kapattığımızda, yanıt süreleri hemen hemen aynı kalır. Opcache kara listesi şu anda boş, bu yüzden dahil edilmedikleri nedeni bu değil.

Opcache_compile_file() yöntemini kullanarak eksik dosyaları zorla önbelleğe almaya çalıştık ve dosyalar derlendiğinde ve önbelleğe alınıp, hiçbir zaman isabet almaz.

Opcache'nin yürütülmekte olan tüm dosyaları önbelleğe alacağı benim anlayışımdı, fakat bu burada olup bitenler gibi görünmüyor. Opcache ayarlarına baktım ama kara listeden başka, bu tür davranışları açık bir şekilde etkileyecek bir şey bulamadım.

Eksik olduğum başka bir şey var mı? PHP'nin önbelleklenip neyin önleneceğine karar verirken kullanacağı diğer kriterler nelerdir?

Konuyla ilgili herhangi bir yardım memnuniyetle karşılanacaktır!

+0

Bahsettiğim bir başka şey ise, opcache.excache.ini dosya ayarında 'opcache.max_accelerated_files' ayarlanabilen, opcache'nin işlem yapabileceği hızlandırılmış dosya sayısının bir sınırı olduğunun farkındayım. Şu anda tüm dosyalarımızı kapsamak için fazlasıyla yeterli olan 8000'e ayarlanmış bulunuyoruz, ancak sadece 163'ü sonlandırılıyor. – santista

+0

Bellek tüketimi de bir sorun gibi görünmüyor, çünkü 128MB'yi "opcache.memory_consumption" ile ayırdık, opcache-gui sadece 23.1MB gösteriliyor. – santista

+0

Buna bir çözüm mü? Aynı problemi yaşıyorum. – anon

cevap

0

opcache.max_file_size değerini kontrol edebilir misiniz? Belki de derlenmiş dosyalar orijinal dosyadan daha büyük olduğundan, bu sizin sorununuz.

Görmediğiniz dosyaları http://php.net/opcache-is-script-cached ile opcache-gui'de test edebilir misiniz? Ayrıca bir test olarak derlemeyi zorlamaya çalışabilir misiniz? Bu konu için http://php.net/opcache-compile-file kullanın. Sadece bir true olup olmadığını ve eğer ilk etapta derleyebildiğini görmek için.