2016-05-20 7 views
6

Mamy więc projekt oparty na Laravel 5.1, który chcemy wydać niedługo, ale zauważamy słabe wyniki, a my " próbuję zoptymalizować konfigurację serwera.Zend Opcache nie buforuje wszystkich plików (CentOS 6.7 + Nginx 1.8.1 + PHP 7 + Laravel 5.1)

Wymienione w tytule, wdrażamy to na serwerze CentOS 6.7, z Nginx 1.8.1 i PHP 7 z PHP-FPM. Ponieważ repozytoria CentOS 6.7 nie oferują PHP 7, używamy pakietów wymiany IUS.

Jedną z rzeczy, które zauważyliśmy, może być przyczyną słabej wydajności, jest fakt, że Zend Opcache, pomimo tego, że jest włączony i działa (mamy dobry wskaźnik trafień), nie wydaje się buforować wszystkich plików w naszym projekcie . Używamy opcache-gui do wizualizacji zawartości pamięci podręcznej i, mimo że wiele plików projektu jest dostępnych (w tym pliki z bibliotek stron trzecich), większość z nich jest niedostępna, w tym nasz główny kontroler i wiele klas pomocniczych. W rzeczywistości, kiedy wyłączamy Opcache, czasy odpowiedzi pozostają praktycznie takie same. Czarna lista opcache jest obecnie pusta, więc to nie jest powód, dla którego nie są uwzględniane.

Próbowaliśmy wymusić buforowanie brakujących plików przy użyciu opcache_compile_file(), a pliki są kompilowane i buforowane, ale nigdy nie trafiają.

To było moje zrozumienie, że Opcache buforowałby wszystkie pliki, które są wykonywane, ale to nie wydaje się być tym, co się tutaj dzieje. Przyjrzałem się ustawieniom opcache, ale nie znalazłem takiego, który miałby oczywisty wpływ na takie zachowanie, poza czarną listą.

Czy jest coś jeszcze, czego mi brakuje? Jakiekolwiek inne kryteria, na podstawie których PHP będzie się opierać, decydując o tym, co buforować, czy nie?

Każda pomoc w tej sprawie byłaby doceniona!

+0

Inną rzeczą, o której pomyślałem, że wspomnę, jestem świadomy, że istnieje limit liczby przyspieszonych plików, które może obsłużyć opcache, które można dostosować w ustawieniu pliku opcache.ini 'opcache.max_accelerated_files'. Mamy obecnie ustawione na 8000, co powinno wystarczyć do pokrycia wszystkich naszych plików, jednak tylko około 163 zostanie zbuforowanych. – santista

+0

Zużycie pamięci również nie wydaje się być problemem, ponieważ przydzieliliśmy 128 MB za pośrednictwem opcache.memory_consumption, a w opcache-gui tylko 23.1 MB. – santista

+0

Jakieś rozwiązanie tego? Mam ten sam problem. – anon

Odpowiedz

0

Czy możesz sprawdzić wartość opcache.max_file_size? Może to twój problem, ponieważ skompilowane pliki są większe niż oryginalny plik.

Czy możesz przetestować pliki, których nie widzisz w opcache-gui z http://php.net/opcache-is-script-cached?

Również, jako test, możesz spróbować wymusić kompilację? W tym celu użyj http://php.net/opcache-compile-file. Chodzi tylko o sprawdzenie, czy istnieje true i czy można go skompilować w pierwszej kolejności.