Napraw ostrzeżenie o limicie pamięci PHP w Nextcloud

Aby usunąć ostrzeżenie o limicie pamięci PHP w Nextcloud, należy ustawić memory_limitco najmniej wartość 512Mw konfiguracji PHP używanej przez serwer WWW, a następnie zrestartować lub przeładować odpowiednią usługę PHP. Aktualny, stabilny podręcznik administratora Nextcloud zaleca co najmniej 512 MB dla tego ustawienia PHP. Najczęstszym powodem, dla którego ostrzeżenie pozostaje po edycji pliku, jest to, że serwer WWW używa innej konfiguracji PHP niż instalacja PHP z wiersza poleceń.

Wybierz procedurę odpowiadającą Twojemu wdrożeniu: Apache z mod_php, Apache lub Nginx z PHP-FPM, kontener lub zarządzany pakiet Nextcloud. Nie edytuj losowych danych hosta php.inii nie zakładaj, że każde wdrożenie z nich korzysta. Sprawdź wynik na stronie Przegląd administratora Nextcloud, która odzwierciedla konfigurację aplikacji internetowej.

Co oznacza to ostrzeżenie?

Wartość PHP memory_limitto maksymalna ilość pamięci, jaką pojedynczy skrypt PHP może przydzielić. Nie jest to całkowita ilość pamięci RAM zarezerwowana dla NextCloud i nie zwiększa fizycznej pamięci dostępnej dla serwera. Instrukcja NextCloud zaleca skonfigurowanie co najmniej 512 MB dla tej dyrektywy. Oddzielnie, wymagania systemowe wyjaśniają, że rzeczywiste zapotrzebowanie serwera na pamięć różni się w zależności od użytkowników, aplikacji, plików i aktywności; zalecają co najmniej 512 MB pamięci RAM na proces PHP, przy czym minimalna wartość to 128 MB.

Podniesienie limitu PHP może rozwiązać ostrzeżenie dotyczące konfiguracji i zapewnić więcej miejsca na żądania intensywnie wykorzystujące pamięć. Nie pozwala jednak na dodanie pamięci RAM do hosta o zbyt małej pojemności, naprawienie wycieku pamięci ani zagwarantowanie pomyślnego ukończenia każdej aplikacji. Jeśli serwer jest już pod presją pamięci, wyższy limit na żądanie może zwiększyć ryzyko wyczerpania pamięci RAM systemu przez współbieżne procesy PHP.

Którą konfigurację PHP należy edytować?

Najpierw zidentyfikuj, jak PHP uruchamia Nextcloud. Sprawdzenie w terminalu, takie jak php --iniraportowanie konfiguracji wiersza poleceń (CLI), może być pomocne. Żądania webowe Nextcloud mogą korzystać z oddzielnego modułu Apache lub usługi PHP-FPM z innym modułem php.inilub pulą nadpisywania. Nextcloud wyraźnie zaznacza, że ​​PHP webowy i CLI mogą korzystać z różnych plików konfiguracyjnych.

Typowe lokalizacje w systemach opartych na Debianie to /etc/php/8.x/apache2/php.inimoduł PHP Apache'a oraz /etc/php/8.x/fpm/php.iniPHP-FPM. Rzeczywista wersja PHP i nazwy katalogów różnią się. Inne dystrybucje często używają innych ścieżek, takich jak współdzielony plik /etc/php.ini. Potraktuj je jedynie jako przykłady; do zlokalizowania aktywnego pliku użyj menedżera pakietów, konfiguracji usługi i środowiska uruchomieniowego PHP.

Aby sprawdzić konfigurację CLI, uruchom:

php --ini
php -i | grep -i '^memory_limit'

Te polecenia są przydatne w przypadku zaplanowanych zadań, które wywołują PHP z wiersza poleceń, ale nie dowodzą, że proces Nextcloud działający w przeglądarce używa tej samej wartości. Unikaj pozostawiania publicznej phpinfo()strony na serwerze: może ona ujawniać ścieżki, moduły i szczegóły dotyczące środowiska wykonawczego.

Jak ustawić limit dla Apache lub PHP-FPM?

Przed zmianą pliku konfiguracji wykonaj jego kopię zapasową. W odpowiednim wierszu php.iniznajdź istniejący memory_limitwiersz i ustaw go na 512Mwartość lub wyższą, dostosowaną do obciążenia:

memory_limit = 512M

Użyj jednego aktywnego ustawienia zamiast dodawać duplikaty wierszy na końcu kilku plików. Pula PHP-FPM może również definiować wartości dla swoich procesów roboczych, dlatego sprawdź konfigurację puli, jeśli wartość w niej php.ininie działa. Niektóre wdrożenia PHP obsługują ustawienie dla każdego katalogu .user.ini; to, czy jest ono aktywne, zależy od konfiguracji serwera i powinno zostać potwierdzone przez administratora.

Apache używający mod_php

Edytuj ustawienia php.iniużywane przez Apache'a, zapisz je, a następnie uruchom ponownie Apache'a, aby moduł przeładował swoje ustawienia. Nazwy usług są różne. W systemach Debian i Ubuntu usługa jest zazwyczaj apache2; w systemach z rodziny RHEL jest zazwyczaj httpd. Użyj nazwy usługi dla swojego systemu operacyjnego i procedur konserwacyjnych.

sudo systemctl restart apache2

Zastąp, apache2jeśli Twoja dystrybucja używa innej nazwy jednostki. Jeśli NextCloud jest obsługiwany przez PHP-FPM zamiast mod_php, samo ponowne uruchomienie Apache'a nie spowoduje ponownego załadowania procesów roboczych PHP.

Apache lub Nginx używający PHP-FPM

Edytuj konfigurację PHP-FPM faktycznie używaną przez witrynę. Po zapisaniu zmian, uruchom ponownie lub przeładuj pasującą usługę PHP-FPM. Jej jednostka może zawierać wersję PHP, na przykład php8.3-fpm, lub używać innej nazwy specyficznej dla dostawcy.

sudo systemctl restart php8.3-fpm

Użyj poprawnej nazwy usługi dla zainstalowanej wersji PHP. Nginx przekazuje żądania PHP do FPM, więc zmiana ustawień PHP zazwyczaj wymaga zastosowania zmian w FPM; samo ponowne uruchomienie Nginx nie powoduje ponownego załadowania limitu pamięci PHP. Jeśli konfiguracja puli PHP-FPM nadpisuje memory_limit, dostosuj ustawienia puli lub usuń nadpisanie, a następnie uruchom ponownie pulę.

A co jeśli NextCloud będzie działać w Dockerze, AIO, Snap lub innym pakiecie?

Użyj mechanizmu konfiguracji dla tej metody instalacji. Edycja plików PHP hosta zazwyczaj nie zmienia środowiska wykonawczego PHP w kontenerze lub izolowanym pakiecie. Oficjalny obraz Dockera Nextcloud dokumentuje PHP_MEMORY_LIMITzmienną środowiskową, z wartością domyślną 512Mw dokumentacji bieżącego obrazu. Ustaw ją w pliku Compose lub konfiguracji kontenera, a następnie utwórz ponownie lub uruchom ponownie kontener aplikacji zgodnie z procedurą wdrożenia.

environment:
  PHP_MEMORY_LIMIT: 512M

Nie kopiuj tego ustawienia do każdego typu instalacji. W podręczniku Nextcloud podano, że gotowe środowiska, takie jak AIO, Snap, NCP i Community Docker, mają wstępnie skonfigurowany PHP i odsyłają administratorów do instrukcji dotyczących dostosowania dla danego pakietu. W przypadku takich konfiguracji należy skorzystać z obsługiwanego interfejsu lub dokumentacji danego pakietu. Trwałe montowanie woluminów i wygenerowana konfiguracja mogą również zastąpić jednorazową edycję ręczną.

Jak można sprawdzić, czy ostrzeżenie zostało naprawione?

  1. Zastosuj zmianę w konfiguracji PHP skierowanej do Internetu i uruchom ponownie lub przeładuj odpowiednią usługę internetową/PHP.
  2. Zaloguj się do Nextcloud jako administrator i otwórz Ustawienia > Administracja > Przegląd .
  3. Odśwież stronę i sprawdź ostrzeżenia dotyczące konfiguracji. Upewnij się, że ostrzeżenie o limicie pamięci PHP zniknęło.
  4. Uruchom operację typową dla tej operacji, która wcześniej wywołała ostrzeżenie, na przykład zadanie aplikacji, której dotyczy problem, i przejrzyj dzienniki Nextcloud i PHP w poszukiwaniu komunikatów o wyczerpaniu pamięci.

Jeśli uruchamiasz również zadania w tle Nextcloud za pośrednictwem systemowego crona, sprawdź osobno konfigurację PHP interfejsu CLI. Ostrzeżenie dotyczące pracy w sieci można usunąć, dopóki zadania CLI nadal korzystają z dolnego limitu. Potwierdź wartość CLI za pomocą php --inii php -idla tego samego pliku binarnego PHP używanego przez polecenie cron.

Kiedy należy podnieść wartość powyżej 512M?

Zgłaszaj ten problem tylko wtedy, gdy ostrzeżenie zniknie, ale udokumentowane obciążenie nadal osiąga limit PHP lub gdy obsługiwane przez aplikację wytyczne wymagają więcej. Najpierw sprawdź rzeczywistą pamięć serwera, liczbę procesów PHP-FPM, pamięć bazy danych i inne usługi. Ponieważ PHP stosuje limit dla każdego skryptu, kilka aktywnych procesów może jednocześnie zużywać znaczną ilość pamięci. Ustaw zmierzony limit, który pasuje do budżetu pamięci hosta, zamiast używać -1, który PHP dokumentuje jako brak limitu pamięci.

Jeśli ostrzeżenie zniknęło, ale serwer nadal zwalnia lub procesy są zamykane, sprawdź wykorzystanie pamięci systemowej i wymiany, logi PHP-FPM oraz logi Nextcloud. Zastanów się, czy konkretna aplikacja lub żądanie nie zużywa nadmiernie pamięci. Pamięć podręczna, taka jak APCu lub Redis, rozwiązuje problemy z buforowaniem i wydajnością; nie zastępuje ona ustawienia PHP memory_limit. Zmieniaj jeden czynnik na raz, aby sprawdzić, czy wynik się poprawił.

Szybkie kontrole według objawów

  • Ostrzeżenie nadal występuje po edycji pliku php.ini: sprawdź, czy edytowałeś plik CLI zamiast pliku Apache/FPM lub czy ustawienia puli je zastępują.
  • Ostrzeżenie znika, ale zadanie cron nadal się nie powiedzie: sprawdź plik binarny PHP CLI i jego oddzielną konfigurację.
  • Serwer WWW zwraca błąd po ponownym uruchomieniu: sprawdź stan i dzienniki serwera WWW lub usługi PHP-FPM i przywróć kopię zapasową, jeśli zmiana konfiguracji spowodowała błąd uruchamiania.
  • Ostrzeżenie znika, ale hostowi kończy się pamięć RAM: zmniejsz współbieżność, dodaj pamięć lub zidentyfikuj proces używający pamięci przed dalszym zwiększaniem limitu PHP.
  • Używasz kontenera lub pakietu gotowego do użycia: zmień ustawienie PHP obsługiwane przez pakiet, a nie plik php.ini hosta.

Oficjalne referencje

Zostaw komentarz

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

10 najlepszych narzędzi do pingowania w celu znajdowania urządzeń w sieci

Porównaj 10 narzędzi do pingowania, które umożliwiają szybkie wykrywanie sieci LAN, skanowanie międzyplatformowe i zarządzanie adresami IP. Dowiedz się, co narzędzie pingujące może Ci powiedzieć, a czego nie.

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

6 najlepszych narzędzi do zarządzania siecią, umożliwiających śledzenie wydajności

Porównaj sześć narzędzi do zarządzania siecią służących do monitorowania wydajności, obejmujących zasięg SNMP, mapowanie, alerty, modele wdrażania i kompromisy kosztów.

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Ping Monitor: 7 darmowych i otwartych narzędzi do monitorowania dostępności sieci

Porównaj siedem darmowych i otwartych monitorów pingów — od kompletnych pakietów sieciowych po ukierunkowane sondy opóźnień — i wybierz odpowiedni monitor pod kątem dostępności, utraty pakietów i historii.

QoS w sieciach: czym jest jakość usług i jak działa

QoS w sieciach: czym jest jakość usług i jak działa

Dowiedz się, co oznacza QoS w sieciach, w jaki sposób oznaczenia DSCP i kolejki ruchu nadają priorytet aplikacjom głosowym, wideo i biznesowym oraz czego QoS nie jest w stanie naprawić.

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Najlepsze oprogramowanie serwera SFTP do bezpiecznego przesyłania plików

Porównaj niezawodne oprogramowanie serwera SFTP dla systemów Windows i Linux, w tym OpenSSH, Bitvise, SolarWinds i SFTPGo. Znajdź rozwiązanie odpowiednie dla swoich potrzeb w zakresie bezpieczeństwa i transferu plików.

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

7 najlepszych narzędzi do zarządzania adresami IP dla zespołów sieciowych

Porównaj siedem narzędzi do zarządzania adresami IP służących do wykrywania podsieci, koordynacji DNS i DHCP, inwentaryzacji sieci i otwartego oprogramowania IPAM.

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

6 najlepszych narzędzi do monitorowania serwerów Windows Server zapewniających lepszą dostępność i wydajność

Porównaj sześć narzędzi do monitorowania systemu Windows Server pod kątem zbierania danych systemu Windows, widoczności aplikacji, modelu wdrażania i licencjonowania, aby znaleźć odpowiednie rozwiązanie.

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

10 najlepszych narzędzi do skanowania sieci w celu wykrywania urządzeń i adresów IP

Porównaj narzędzia do skanowania sieciowego umożliwiające szybkie wykrywanie urządzeń, skanowanie adresów IP na wielu platformach oraz zarządzanie IPAM w przedsiębiorstwie. Znajdziesz tu wskazówki dotyczące dopasowania każdej opcji do swojej sieci.

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Najlepsze praktyki monitorowania sieci: co śledzić i jakich narzędzi używać

Zbuduj praktyczny monitoring sieci z przejrzystym zakresem urządzeń, przydatnymi wskaźnikami wydajności, przydatnymi alertami oraz porównaniem SolarWinds NPM, PRTG i OpManager.

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Jak używać Nmap do śledzenia trasy i odczytywania ścieżki sieciowej

Użyj opcji --traceroute programu Nmap, aby mapować przeskoki do autoryzowanego hosta, zrozumieć dane wyjściowe dotyczące przeskoków i czasu RTT oraz rozwiązywać problemy z brakującymi odpowiedziami bez nadmiernego skanowania.