Beheben Sie die Nextcloud-PHP-Speicherlimitwarnung

Um eine Nextcloud-Warnung bezüglich des PHP-Speicherlimits zu beheben, setzen Sie den Wert in der PHP-Konfiguration des Webservers memory_limitauf 512Mmindestens 512 MB und starten Sie anschließend den entsprechenden PHP-Dienst neu. Das aktuelle stabile Nextcloud-Administrationshandbuch empfiehlt für diese PHP-Einstellung mindestens 512 MB. Der häufigste Grund, warum eine Warnung nach der Bearbeitung einer Konfigurationsdatei weiterhin besteht, ist, dass der Webserver eine andere PHP-Konfiguration verwendet als die PHP-Installation über die Kommandozeile.

Wählen Sie die Vorgehensweise, die zu Ihrer Bereitstellung passt: Apache mit mod_php, Apache oder Nginx mit PHP-FPM, ein Container oder ein verwaltetes Nextcloud-Paket. Ändern Sie nicht die zufällige Konfiguration des Hosts php.iniund gehen Sie nicht davon aus, dass jede Bereitstellung diese verwendet. Überprüfen Sie das Ergebnis auf der Nextcloud-Admin-Übersichtsseite, die die Konfiguration der Webanwendung widerspiegelt.

Was bedeutet diese Warnung?

Der PHP- memory_limitSpeicherbelegungsrahmen gibt die maximale Speichermenge an, die ein einzelnes PHP-Skript belegen darf. Er entspricht nicht dem gesamten für Nextcloud reservierten Arbeitsspeicher und erhöht auch nicht den dem Server zur Verfügung stehenden physischen Speicher. Laut Nextcloud-Handbuch sollten für diese Direktive mindestens 512 MB konfiguriert werden. Die Systemanforderungen weisen zudem darauf hin, dass der tatsächliche Speicherbedarf des Servers je nach Benutzern, Anwendungen, Dateien und Aktivitäten variiert. Sie empfehlen mindestens 512 MB RAM pro PHP-Prozess, mit einem Minimum von 128 MB.

Durch Anheben des PHP-Limits lässt sich eine Konfigurationswarnung beheben und speicherintensiven Anfragen mehr Spielraum verschaffen. Es kann jedoch weder den Arbeitsspeicher eines unterdimensionierten Hosts erweitern noch ein Speicherleck beheben oder garantieren, dass jede Anwendung erfolgreich abgeschlossen wird. Steht der Server bereits unter Speicherdruck, kann ein höheres Limit pro Anfrage das Risiko erhöhen, dass gleichzeitig laufende PHP-Prozesse den Arbeitsspeicher des Systems erschöpfen.

Welche PHP-Konfiguration sollten Sie bearbeiten?

Zunächst muss ermittelt werden, wie Nextcloud mit PHP ausgeführt wird. Eine Terminalabfrage, beispielsweise mit dem Befehl `npm run php --inidev`, zeigt die Konfiguration der Kommandozeile (CLI) an. Die Webanfragen von Nextcloud können ein separates Apache-Modul oder einen PHP-FPM-Dienst mit einer anderen Konfiguration php.inioder einem Pool-Override verwenden. Nextcloud weist ausdrücklich darauf hin, dass Web- und CLI-PHP unterschiedliche Konfigurationsdateien verwenden können.

Typische Speicherorte auf Debian-basierten Systemen sind beispielsweise /etc/php/8.x/apache2/php.inidas PHP-Modul von Apache und /etc/php/8.x/fpm/php.iniPHP-FPM. Die tatsächliche PHP-Version und die Verzeichnisnamen können variieren. Andere Distributionen verwenden häufig andere Pfade, etwa ein gemeinsames Verzeichnis /etc/php.ini. Diese Angaben dienen lediglich als Beispiele; verwenden Sie Ihren Paketmanager, Ihre Dienstkonfiguration und Ihre PHP-Laufzeitumgebung, um die aktive Datei zu finden.

Um die CLI-Konfiguration zu überprüfen, führen Sie Folgendes aus:

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

Diese Befehle sind nützlich für geplante Jobs, die PHP über die Kommandozeile aufrufen, beweisen aber nicht, dass der Browser-seitige Nextcloud-Prozess denselben Wert verwendet. Vermeiden Sie es, eine öffentliche phpinfo()Seite auf dem Server zu belassen: Dadurch können Pfade, Module und Laufzeitdetails offengelegt werden.

Wie legt man das Limit für Apache oder PHP-FPM fest?

Sichern Sie die aktive Konfigurationsdatei, bevor Sie sie ändern. php.iniSuchen Sie in der entsprechenden Datei die vorhandene memory_limitZeile und setzen Sie sie auf 512Meinen für Ihre Arbeitslast geeigneten höheren Wert.

memory_limit = 512M

Verwenden Sie eine einzige aktive Einstellung, anstatt am Ende mehrerer Dateien doppelte Zeilen hinzuzufügen. Ein PHP-FPM-Pool kann auch Werte für seine Worker definieren. Überprüfen Sie daher die Pool-Konfiguration, falls der Wert php.inikeine Wirkung zeigt. Einige PHP-Installationen unterstützen eine verzeichnisspezifische Einstellung .user.ini; ob diese aktiv ist, hängt von der Serverkonfiguration ab und sollte mit dem Administrator geklärt werden.

Apache mit mod_php

Bearbeiten Sie die php.inivon Apache verwendete Konfigurationsdatei, speichern Sie sie und starten Sie Apache neu, damit das Modul seine Einstellungen neu lädt. Dienstnamen können variieren. Unter Debian oder Ubuntu lautet der Dienstname üblicherweise apache2`apache`, unter RHEL-Systemen üblicherweise `apache` httpd. Verwenden Sie den Dienstnamen, der zu Ihrem Betriebssystem und Ihren Wartungsverfahren passt.

sudo systemctl restart apache2

Ersetzen Sie dies apache2, falls Ihre Distribution einen anderen Unit-Namen verwendet. Wenn Nextcloud über PHP-FPM anstatt über mod_php bereitgestellt wird, werden die PHP-Worker durch einen Neustart von Apache nicht neu geladen.

Apache oder Nginx mit PHP-FPM

Bearbeiten Sie die von der Website verwendete PHP-FPM-Konfiguration. Nach dem Speichern der Änderung starten Sie den entsprechenden PHP-FPM-Dienst neu oder laden Sie ihn neu. Die zugehörige Einheit kann beispielsweise die PHP-Version enthalten php8.3-fpmoder einen anderen herstellerspezifischen Namen verwenden.

sudo systemctl restart php8.3-fpm

Verwenden Sie den korrekten Dienstnamen für Ihre installierte PHP-Version. Nginx leitet PHP-Anfragen an FPM weiter. Daher muss eine Änderung der PHP-Einstellungen in der Regel auch in FPM vorgenommen werden; ein Neustart von Nginx allein setzt das Speicherlimit von PHP nicht zurück. Falls Ihre PHP-FPM-Poolkonfiguration die Einstellung überschreibt memory_limit, passen Sie die Pooleinstellung an oder entfernen Sie die Überschreibung und starten Sie den Pool anschließend neu.

Was passiert, wenn Nextcloud in Docker, AIO, Snap oder einem anderen Paket läuft?

Verwenden Sie den Konfigurationsmechanismus für diese Installationsmethode. Das Bearbeiten der PHP-Dateien des Hosts ändert in der Regel nicht die PHP-Laufzeitumgebung innerhalb eines Containers oder eines isolierten Pakets. Die offizielle Nextcloud-Docker-Image-Dokumentation beschreibt die PHP_MEMORY_LIMITUmgebungsvariable mit einem Standardwert, der 512Min der aktuellen Image-Dokumentation angegeben ist. Setzen Sie diese Variable in der Compose-Datei oder der Containerkonfiguration und erstellen oder starten Sie anschließend den Anwendungscontainer gemäß der Bereitstellungsprozedur neu.

environment:
  PHP_MEMORY_LIMIT: 512M

Kopieren Sie diese Einstellung nicht in jede Installationsart. Laut Nextcloud-Handbuch verfügen schlüsselfertige Umgebungen wie AIO, Snap, NCP und Community Docker über vorkonfiguriertes PHP und verweisen Administratoren auf die paketspezifischen Anweisungen zur Anpassung. Verwenden Sie für diese Setups die unterstützte Schnittstelle oder Dokumentation des jeweiligen Pakets. Permanente Volume-Mounts und generierte Konfigurationen können zudem eine einmalige manuelle Bearbeitung überschreiben.

Wie können Sie bestätigen, dass die Warnung behoben ist?

  1. Wenden Sie die Änderung auf die webseitige PHP-Konfiguration an und starten Sie den entsprechenden Web-/PHP-Dienst neu oder laden Sie ihn neu.
  2. Melden Sie sich als Administrator bei Nextcloud an und öffnen Sie Einstellungen > Administration > Übersicht .
  3. Aktualisieren Sie die Seite und überprüfen Sie die Konfigurationswarnungen. Vergewissern Sie sich, dass die PHP-Speicherbeschränkungswarnung nicht mehr angezeigt wird.
  4. Führen Sie eine repräsentative Operation aus, die zuvor die Warnung ausgelöst hat, z. B. die Aufgabe der betroffenen App, und überprüfen Sie die Nextcloud- und PHP-Protokolle auf Meldungen über Speichermangel.

Wenn Sie Nextcloud-Hintergrundprozesse auch über System-Cron ausführen, überprüfen Sie die PHP-Konfiguration der Kommandozeile separat. Die Warnung in der Webanwendung kann behoben werden, während die Kommandozeilenprozesse weiterhin ein niedrigeres Limit verwenden. Bestätigen Sie den Wert der Kommandozeile für php --inidieselbe php -iPHP-Binärdatei, die auch vom Cron-Befehl verwendet wird.

Wann sollte der Wert über 512 Mio. angehoben werden?

Erhöhen Sie das Limit nur, wenn die Warnung nicht mehr angezeigt wird, die dokumentierte Arbeitslast aber weiterhin das PHP-Limit erreicht oder die Anwendungsrichtlinien einen höheren Speicherbedarf vorschreiben. Überprüfen Sie zunächst den tatsächlichen Serverspeicher, die Anzahl der PHP-FPM-Worker, den Datenbankspeicher und andere Dienste. Da PHP das Limit pro Skript anwendet, können mehrere stark ausgelastete Worker gleichzeitig erheblichen Speicher belegen. Setzen Sie stattdessen ein angemessenes Limit, das zum Speicherbudget des Hosts passt, anstatt das -1PHP-Limit zu verwenden, das laut Dokumentation kein Speicherlimit hat.

Wenn die Warnung verschwunden ist, der Server aber weiterhin langsam ist oder Prozesse beendet werden, überprüfen Sie den Systemspeicher, die Auslagerungsspeichernutzung, die PHP-FPM-Protokolle und die Nextcloud-Protokolle. Prüfen Sie, ob eine bestimmte Anwendung oder Anfrage übermäßig viel Speicher verbraucht. Ein Speichercache wie APCu oder Redis kann Probleme mit dem Caching und der Performance beheben; er ersetzt jedoch nicht die PHP-Einstellungen memory_limit. Ändern Sie jeweils nur einen Faktor, um festzustellen, ob sich das Ergebnis verbessert hat.

Schnellchecks anhand der Symptome

  • Die Warnung bleibt auch nach der Bearbeitung der php.ini bestehen: Überprüfen Sie, ob Sie die CLI-Datei anstelle der Apache/FPM-Datei bearbeitet haben oder ob eine Pool-Einstellung diese überschreibt.
  • Die Warnung verschwindet, aber ein Cron-Job schlägt immer noch fehl: Überprüfen Sie die CLI-PHP-Binärdatei und ihre separate Konfiguration.
  • Der Webserver gibt nach dem Neustart einen Fehler zurück: Überprüfen Sie den Status und die Protokolle des Webservers bzw. des PHP-FPM-Dienstes und stellen Sie die Sicherung wieder her, falls die Konfigurationsänderung einen Startfehler verursacht hat.
  • Die Warnung verschwindet, aber dem Host geht der Arbeitsspeicher aus: Reduzieren Sie die Parallelität, fügen Sie Speicher hinzu oder identifizieren Sie den Prozess, der den Speicher belegt, bevor Sie das PHP-Limit weiter erhöhen.
  • Sie verwenden einen Container oder ein Komplettpaket: Ändern Sie die unterstützten PHP-Einstellungen des Pakets anstatt die php.ini des Hosts.

Offizielle Referenzen

Einen Kommentar hinterlassen

Die 10 besten Ping-Sweep-Tools zum Auffinden von Geräten in Ihrem Netzwerk

Die 10 besten Ping-Sweep-Tools zum Auffinden von Geräten in Ihrem Netzwerk

Vergleichen Sie 10 Ping-Sweep-Tools für die schnelle LAN-Erkennung, plattformübergreifende Scans und IP-Adressverwaltung. Erfahren Sie, was ein Sweep liefern kann – und was nicht.

Die 6 besten Netzwerkmanagement-Tools zur Leistungsüberwachung

Die 6 besten Netzwerkmanagement-Tools zur Leistungsüberwachung

Vergleichen Sie sechs Netzwerkmanagement-Tools für die Leistungsüberwachung, einschließlich SNMP-Abdeckung, Mapping, Warnmeldungen, Bereitstellungsmodelle und Kosten-Nutzen-Verhältnisse.

Die besten WLAN-Analysatoren für Windows, iOS und Android

Die besten WLAN-Analysatoren für Windows, iOS und Android

Vergleichen Sie die besten Wi-Fi-Analyseprogramme für Windows, iPhone und Android, einschließlich Tools für Kanalüberlastung, Signalabdeckung, Heatmaps und Netzwerk-Fehlerbehebung.

QoS in Netzwerken: Was Quality of Service bewirkt und wie es funktioniert

QoS in Netzwerken: Was Quality of Service bewirkt und wie es funktioniert

Erfahren Sie, was QoS in der Netzwerktechnik bedeutet, wie DSCP-Markierungen und Datenverkehrswarteschlangen Sprach-, Video- und Geschäftsanwendungen priorisieren und was QoS nicht beheben kann.

Beste SFTP-Server-Software für sichere Dateiübertragungen

Beste SFTP-Server-Software für sichere Dateiübertragungen

Vergleichen Sie zuverlässige SFTP-Server-Software für Windows und Linux, darunter OpenSSH, Bitvise, SolarWinds und SFTPGo. Finden Sie die passende Lösung für Ihre Sicherheits- und Dateitransferanforderungen.

Die 10 besten Tools zum Scannen und Analysieren drahtloser Geräte für Windows, iOS und Android

Die 10 besten Tools zum Scannen und Analysieren drahtloser Geräte für Windows, iOS und Android

Vergleichen Sie 10 Tools zum Scannen und Analysieren drahtloser Netzwerke für Windows, iOS und Android mit klaren Hinweisen zu Wi-Fi-Kanälen, Abdeckungskarten, LAN-Prüfungen und Plattformbeschränkungen.

Bewährte Methoden für die Netzwerküberwachung: Was sollte überwacht werden und welche Tools eignen sich?

Bewährte Methoden für die Netzwerküberwachung: Was sollte überwacht werden und welche Tools eignen sich?

Erstellen Sie eine praktische Netzwerküberwachung mit klarer Geräteabdeckung, nützlichen Leistungskennzahlen, umsetzbaren Warnmeldungen und einem Vergleich von SolarWinds NPM, PRTG und OpManager.

Die 7 besten IP-Adressverwaltungstools für Netzwerkteams

Die 7 besten IP-Adressverwaltungstools für Netzwerkteams

Vergleichen Sie sieben IP-Adressverwaltungstools für Subnetzerkennung, DNS- und DHCP-Koordination, Netzwerkinventarisierung und Open-Source-IPAM.

Die 10 besten Netzwerk-Scanner-Tools zur Erkennung von Geräten und IPs

Die 10 besten Netzwerk-Scanner-Tools zur Erkennung von Geräten und IPs

Vergleichen Sie Netzwerk-Scanner-Tools für die schnelle Geräteerkennung, plattformübergreifende IP-Scans und Enterprise IPAM mit Hinweisen zur Auswahl der passenden Option für Ihr Netzwerk.

Wie man Nmap für Traceroute verwendet und den Netzwerkpfad liest

Wie man Nmap für Traceroute verwendet und den Netzwerkpfad liest

Verwenden Sie die Option --traceroute von Nmap, um Hops einem autorisierten Host zuzuordnen, die Hop- und RTT-Ausgabe zu verstehen und fehlende Antworten zu beheben, ohne übermäßig zu scannen.