Napraw ostrzeżenie Nextcloud „PHP OPcache nie jest poprawnie skonfigurowany”
Jeśli Nextcloud zgłasza komunikat „Opcache PHP nie jest poprawnie skonfigurowany” , właściwym rozwiązaniem nie jest wklejanie dużego bloku dostrajającego ze starego posta na forum. Najpierw zidentyfikuj limit lub ustawienie OPcache, któremu sprzeciwia się Nextcloud, a następnie zmień konfigurację PHP faktycznie używaną przez serwer WWW.
W aktualnej dokumentacji administracyjnej Nextcloud 35, OPcache jest traktowany jako ważna warstwa wydajnościowa PHP. Nextcloud informuje, że jego panel administracyjny wyświetla odpowiednie ostrzeżenie, gdy limit rozmiaru OPcache przekracza 90% przydzielonej pojemności. Wymaga również zachowania komentarzy do kodu buforowanego. Własny podręcznik PHP dokumentuje odpowiednie dyrektywy i ich ustawienia domyślne. Te informacje pozwalają na bezpieczniejsze dostrajanie OPcache: zwiększanie tylko ograniczonych zasobów, utrzymywanie wymaganego działania włączonych i unikanie zmian, które komplikują aktualizacje, chyba że są uzasadnione.
Ostrzeżenie należy traktować jako wskazówkę diagnostyczną: przed zmianą limitów pamięci lub liczby plików należy zidentyfikować konkretne ograniczenie OPcache.
Co zazwyczaj oznacza ostrzeżenie Nextcloud OPcache
OPcache przechowuje skompilowany bajtkod PHP w pamięci współdzielonej, dzięki czemu PHP nie musi parsować i kompilować tych samych plików aplikacji przy każdym żądaniu. Nextcloud opisuje to jako funkcję zwiększającą wydajność, a PHP dołącza Zend OPcache do rdzenia od wersji PHP 5.5.
Ostrzeżenie może pojawić się z kilku powodów. Najczęstszymi przypadkami są: pojemność pamięci podręcznej OPcache jest bliska zapełnienia, pamięć podręczna OPcache jest wyłączona dla interfejsu SAPI w przeglądarce lub zmieniono wymagane zachowanie, takie jak zachowywanie komentarzy. Aktualny poradnik NextCloud stwierdza, że ostrzeżenie o rozmiarze jest wyświetlane, gdy limit rozmiaru pamięci podręcznej OPcache przekracza 90% przydzielonej przestrzeni, i wyraźnie wymaga opcache.save_comments = 1.
Wykorzystuje więcej współdzielonej pamięci RAM, ale zmniejsza utratę pamięci podręcznej
Wewnętrzne ciągi są prawie pełne
Zwiększyćopcache.interned_strings_buffer
Zużywa dodatkową pamięć współdzieloną; podniesienie niepowiązanych limitów nie przynosi żadnych korzyści
Sloty skryptów/plików w pamięci podręcznej są prawie pełne
Zwiększyćopcache.max_accelerated_files
Większa tablica skrótów wykorzystuje więcej pamięci
OPcache jest wyłączony
Zestaw opcache.enable=1do konfiguracji PHP w sieci
Normalne i zalecane dla Nextcloud; sprawdź poprawność SAPI
opcache.save_commentszostał wyłączony
Ustawićopcache.save_comments=1
Brak istotnego powodu specyficznego dla Nextcloud, aby wyłączyć tę funkcję; Nextcloud wymaga zachowania komentarzy
PHP obecnie podaje wartości domyślne 128 MB dla opcache.memory_consumption, 8 MB dla opcache.interned_strings_bufferi 10 000 dla opcache.max_accelerated_files. Te wartości domyślne są punktami odniesienia, a nie uniwersalnymi celami NextCloud. Mały serwer osobisty może być odpowiedni w ich pobliżu, podczas gdy większa instalacja z wieloma aplikacjami może wymagać więcej przestrzeni.
Krok 1: Sprawdź, jakiej konfiguracji PHP faktycznie używa Nextcloud
To krok, który zapobiega wielu nieudanym poprawkom. Nextcloud dokumentuje, że serwer WWW i wiersz poleceń PHP mogą ładować różne pliki konfiguracyjne. W systemach Debian i Ubuntu typowe ścieżki to /etc/php/<version>/fpm/php.ini, /etc/php/<version>/apache2/php.inii /etc/php/<version>/cli/php.ini.
Uruchom php --ini, aby wyświetlić konfigurację CLI, ale nie zakładaj, że jest to ten sam plik, którego używają PHP-FPM lub Apache. W przypadku interfejsu SAPI sieci Web użyj phpinfo()strony tymczasowej tylko wtedy, gdy możesz ją natychmiast zabezpieczyć i usunąć, lub sprawdź konfigurację puli/usługi PHP-FPM i pliki modułów specyficzne dla dystrybucji.
Zalecenie: jeśli NextCloud działa w oparciu o Nginx lub Apache z PHP-FPM, zmodyfikuj konfigurację FPM OPcache. Jeśli Apache używa mod_php, zmodyfikuj konfigurację Apache PHP. Zachowaj spójną konfigurację CLI, gdy zadania w tle wymagają tego samego zachowania, ale pamiętaj, że ostrzeżenie przeglądarki jest generowane przez ścieżkę żądania internetowego.
Krok 2: Edytuj najmniejszy zestaw dyrektyw OPcache, który rozwiązuje problem
Edytuj konfigurację OPcache używaną przez web SAPI. Zwiększ tylko ograniczony zasób, zamiast bezmyślnie kopiować zbyt duży preset.
Poniżej przedstawiono konserwatywny przykład dla serwera o niewielkiej pojemności. Wartości liczbowe należy traktować jako punkty wyjścia, a nie gwarancje:
Jeśli Nextcloud wyraźnie wskazuje, że pamięć OPcache jest prawie pełna, przejście ze 128 MB do 256 MB może być rozsądną, stopniową zmianą, o ile serwer ma wystarczająco dużo wolnej pamięci RAM. Jeśli ostrzeżenie wskazuje na ciągi znaków w pamięci wewnętrznej lub skrypty w pamięci podręcznej, należy zwiększyć ten limit, a nie tylko pamięć. Na serwerze VPS z ograniczoną pamięcią, przejście bezpośrednio do 512 MB może zmniejszyć ilość pamięci RAM dostępnej dla procesów PHP-FPM, bazy danych, Redis i systemu operacyjnego.
A co z ustawieniami ponownej walidacji?
Aktualny poradnik Nextcloud dotyczący strojenia mówi, że PHP domyślnie sprawdza skrypty w pamięci podręcznej pod kątem zmian co dwie sekundy i nie zaleca zmiany tego ustawienia dla wszystkich. Podniesienie wartości opcache.revalidate_freqmoże zmniejszyć liczbę sprawdzeń systemu plików, ale kompromis jest operacyjny: aktualizacje i edycje aplikacji config.phpmogą być widoczne dłużej. Całkowite wyłączenie walidacji znaczników czasu jest bardziej agresywne i może pozostawić stary kod aktywny do momentu ręcznego wyczyszczenia pamięci podręcznej OPcache lub ponownego uruchomienia PHP.
Większość administratorów, którzy próbują jedynie usunąć ostrzeżenie, powinna porzucić opcache.validate_timestampsswoje opcache.revalidate_freqstandardowe zachowanie, chyba że rozumieją przepływ pracy związany z wdrożeniem. Nextcloud ostrzega, że nietypowe zachowanie po aktualizacjach może wynikać z nieaktualnego kodu w pamięci podręcznej po zmianie walidacji.
Krok 3: Uruchom ponownie właściwą usługę PHP
Po zmianie pliku INI należy zrestartować lub przeładować proces PHP obsługujący NextCloud. Typowymi przykładami są systemctl restart php8.2-fpmPHP-FPM lub restart/przeładowanie Apache, gdy używany jest mod_php. Zastąp wersję i nazwę usługi tym, co faktycznie działa w systemie.
Ma to jeszcze większe znaczenie, jeśli zmieniłeś sposób ponownej walidacji. Ponowne uruchomienie poprawnej usługi gwarantuje załadowanie nowej konfiguracji OPcache i usuwa niejasności dotyczące nieaktualnego kodu bajtowego.
Krok 4: Zweryfikuj wartości, ale zweryfikuj również interfejs SAPI sieci Web
Sprawdzanie CLI jest przydatne do znajdowania plików INI i potwierdzania składni, ale interfejs SAPI sieci Web może załadować inną konfigurację.
Przydatne kontrole wiersza poleceń obejmują:
php --ini
php -i | grep -i opcache
Te polecenia mogą potwierdzić, że PHP rozpoznaje dyrektywy, ale udowadniają jedynie konfigurację CLI. Jeśli ostrzeżenie Nextcloud nadal się wyświetla, należy porównać załadowaną konfigurację interfejsu SAPI z wynikami CLI. Jest to szczególnie ważne w systemach, które utrzymują oddzielne drzewa cli, fpm, i apache2INI.
Krok 5: Sprawdź ponownie Administrację > Przegląd
Po przeładowaniu PHP odśwież Administracja > Przegląd. Ostrzeżenie OPcache powinno zniknąć, gdy interfejs SAPI będzie używał odpowiednich limitów i wymaganych ustawień.
Odśwież podgląd administracyjny Nextcloud po restarcie usługi PHP. Jeśli ostrzeżenie zniknie, konfiguracja jest odczytywana przez właściwy interfejs SAPI, a zgłoszony próg nie jest już przekroczony.
Jeśli problem nadal występuje, nie zwiększaj wartości losowo. Sprawdź kolejno cztery rzeczy: czy edytowałeś właściwy plik INI, czy inny, później załadowany plik INI nie nadpisuje Twojego ustawienia, czy odpowiednia usługa PHP została ponownie uruchomiona oraz czy ostrzeżenie nie wskazuje innego zasobu OPcache niż ten, który zwiększyłeś.
Ile pamięci OPcache należy przydzielić?
Nie ma jednej, najlepszej wartości. Użytecznym celem jest wystarczająca przestrzeń, aby pamięć podręczna nie zbliżała się stale do swoich limitów, bez jednoczesnego zaśmiecania reszty stosu. W przypadku małego serwera VPS należy zacząć ostrożnie i obserwować obciążenie pamięci. W przypadku instancji z wieloma aplikacjami lub większym rozmiarem kodu PHP, 256 MB lub więcej może być uzasadnione, gdy rzeczywiste użycie OPcache pokazuje, że 128 MB jest niewystarczające. Na dużym serwerze rozmiar pamięci należy rozważyć łącznie z liczbą pracowników PHP-FPM i innymi usługami współdzielonymi.
Praktyczne porównanie jest proste: większa ilość pamięci OPcache może zmniejszyć liczbę operacji usuwania pamięci podręcznej i rekompilacji, ale mniejsza ilość pamięci OPcache pozostawia więcej pamięci RAM dla równoczesnych procesów PHP i baz danych. Wybierz na podstawie zmierzonego użycia i ostrzeżeń zgłaszanych przez Nextcloud, a nie na podstawie największej liczby, jaką Twój serwer może zaakceptować.
Edycja wyłącznie CLI PHP: przeglądarka nadal używa PHP-FPM lub mod_php.
Podniesienie niewłaściwego limitu: większa ilość pamięci nie naprawi całej tabeli przyspieszonych plików.
Zapomnienie o ponownym uruchomieniu: działający proces PHP może nadal mieć stare wartości INI.
Wyłączanie opcache.save_comments: Nextcloud wymaga zachowania komentarzy.
Kopiowanie nieaktualnych fragmentów kodu dostrajającego: stare przewodniki mogą zalecać agresywne ustawienia ponownej walidacji, które mogą powodować problemy z aktualizacją.
Zalecane podejście według typu serwera
Mały, osobisty serwer Nextcloud: zachowaj domyślne ustawienia ponownej walidacji, zapisz komentarze i zwiększ limit tylko do wartości, która faktycznie przekracza próg. Minimalizuje to zużycie pamięci RAM i niespodzianki operacyjne.
Obciążony serwer wielodostępny: monitoruj zużycie pamięci podręcznej OPcache i zapewnij większy zapas, gdy ostrzeżenie administratora wskazuje na obciążenie. Koordynuj pamięć podręczną OPcache z rozmiarem pracownika PHP-FPM, aby jedna optymalizacja nie powodowała wymiany w całym systemie.
Hosting zarządzany lub obraz kontenera: najpierw określ, gdzie mają zostać zastąpione ustawienia PHP. Edycja pliku w tymczasowym kontenerze może zniknąć po ponownym wdrożeniu, podczas gdy dostawca może udostępnić niestandardowe wartości INI za pośrednictwem panelu sterowania lub konfiguracji środowiska.
Ostateczna kontrola
Poprawna poprawka składa się z trzech części: proces PHP w sieci WWW Nextcloud ma włączony OPcache, wymagane zachowanie, takie jak [ opcache.save_comments=1brakuje wartości], pozostaje nienaruszone, a konkretny zasób OPcache, który był bliski wyczerpania, ma teraz rozsądny zapas. Po spełnieniu tych warunków i ponownym załadowaniu PHP, ostrzeżenie powinno zniknąć bez uciekania się do nadmiernej alokacji pamięci lub ryzykownych zmian w walidacji pamięci podręcznej.