2016-05-20 17 views
6

Also, wir haben ein Laravel 5.1-basiertes Projekt, das wir bald veröffentlichen wollen, aber wir bemerken schlechte Leistung, und wir ' versuchen, das Server-Setup zu optimieren.Zend Opcache speichert nicht alle Dateien (CentOS 6.7 + Nginx 1.8.1 + PHP 7 + Laravel 5.1)

Wie im Titel angegeben, stellen wir dies auf einem CentOS 6.7 Server bereit, mit Nginx 1.8.1 und PHP 7 mit PHP-FPM. Da die Repositories von CentOS 6.7 kein PHP 7 anbieten, verwenden wir Ersatzpakete von IUS.

Eines der Dinge, die uns aufgefallen sind, die schlechte Leistung verursachen können, ist die Tatsache, dass Zend Opcache, obwohl aktiviert und funktioniert (wir haben eine gute Trefferquote), nicht alle Dateien in unserem Projekt zwischenspeichert . Wir verwenden opcache-gui, um den Inhalt des Caches zu visualisieren. Während viele der Projektdateien vorhanden sind (einschließlich Dateien aus Bibliotheken von Drittanbietern), fehlen die meisten, einschließlich unseres Hauptcontrollers und vieler unterstützender Klassen. In der Tat, wenn wir Opcache deaktivieren, bleiben die Reaktionszeiten praktisch gleich. Die Opcache-Blacklist ist derzeit leer, das ist also nicht der Grund, warum sie nicht einbezogen werden.

Wir haben versucht, die fehlenden Dateien mithilfe von opcache_compile_file() zwangsweise zwischenzuspeichern, und während die Dateien kompiliert und zwischengespeichert werden, erhalten sie keine Treffer.

Es war mein Verständnis, dass Opcache alle ausführenden Dateien zwischenspeichern würde, aber das scheint nicht zu sein, was hier passiert. Ich habe mir die Opcache-Einstellungen angeschaut, konnte aber, abgesehen von der Blacklist, keinen finden, der diese Art von Verhalten offensichtlich beeinflussen würde.

Gibt es noch etwas, das ich vermisse? Irgendwelche anderen Kriterien, auf die sich PHP verlassen würde, wenn er entscheidet, was zu cachen ist oder nicht?

Jede Hilfe in dieser Angelegenheit wäre willkommen!

+0

Eine andere Sache, die ich erwähnen würde, ist mir bewusst, dass es eine Grenze für die Anzahl der beschleunigten Dateien gibt, die opcache verarbeiten kann, die in der opcache.ini Dateieinstellung 'opcache.max_accelerated_files' angepasst werden kann. Wir haben das derzeit auf 8000 eingestellt, was mehr als genug sein sollte, um alle unsere Dateien abzudecken, jedoch werden nur etwa 163 im Cache gespeichert. – santista

+0

Speicherverbrauch scheint auch kein Problem zu sein, da wir 128 MB über 'opcache.memory_consumption 'zugewiesen haben, Opcache-GUI-Shows nur 23.1MB verwendet wird. – santista

+0

Irgendeine Lösung zu diesem? Ich habe das gleiche Problem. – anon

Antwort

0

Können Sie den Wert von opcache.max_file_size überprüfen? Vielleicht ist das Ihr Problem, da kompilierte Dateien größer sind als die Originaldatei.

Können Sie die Dateien, die Sie nicht in Opcache-GUI mit http://php.net/opcache-is-script-cached sehen?

Können Sie als Test auch versuchen, die Kompilierung zu erzwingen? Verwenden Sie http://php.net/opcache-compile-file für diese Angelegenheit. Es ist nur zu sehen, ob es eine true gibt und ob sie es in erster Linie kompilieren kann.