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

Hohe CPU-Auslastung in Jitsi Meet auf Client-Browsern beheben

Hohe CPU-Auslastung in Jitsi Meet auf Client-Browsern beheben

Diagnostizieren Sie CPU-Spitzen im Jitsi Meet-Browser und reduzieren Sie die Clientlast, indem Sie Videokacheln, Kameraeffekte, Browsergrafiken und Host-Einstellungen überprüfen.

Wie man Jitsi Videobridge-Metriken mit Prometheus und Grafana überwacht

Wie man Jitsi Videobridge-Metriken mit Prometheus und Grafana überwacht

Verfolgen Sie den Status von Jitsi Videobridge, die Konferenzlast und den Datenverkehr mit dem integrierten Prometheus-Endpunkt und analysieren und visualisieren Sie die Daten anschließend in Grafana.

So konfigurieren Sie einen benutzerdefinierten Domänennamen für Jitsi Meet Docker

So konfigurieren Sie einen benutzerdefinierten Domänennamen für Jitsi Meet Docker

Konfigurieren Sie eine benutzerdefinierte Domain für Jitsi Meet Docker mit DNS, PUBLIC_URL, HTTPS, Let's Encrypt, Firewall-Ports, NAT-Einstellungen und Ende-zu-Ende-Verifizierung.

Behebung des Zimbra-Administrationskonsolenfehlers 404 (Nicht gefunden) nach SSL-Erneuerung

Behebung des Zimbra-Administrationskonsolenfehlers 404 (Nicht gefunden) nach SSL-Erneuerung

Beheben Sie 404-Fehler in der Zimbra-Administrationskonsole nach der SSL-Erneuerung, indem Sie die korrekte URL und den Port, das Proxy-Routing, den Dienststatus, die bereitgestellten Zertifikate und die Protokolle überprüfen.

Nextcloud-Warnung „Der PHP OPcache ist nicht ordnungsgemäß konfiguriert“ beheben

Nextcloud-Warnung „Der PHP OPcache ist nicht ordnungsgemäß konfiguriert“ beheben

Erfahren Sie, wie Sie die PHP OPcache-Konfigurationswarnung von Nextcloud diagnostizieren und beheben können, indem Sie die aktive PHP SAPI, Größenbeschränkungen, Kommentare und Revalidierungseinstellungen überprüfen.

Behebung von Kopano-Datenbankmigrationsfehlern nach einem MySQL-Versionsupgrade

Behebung von Kopano-Datenbankmigrationsfehlern nach einem MySQL-Versionsupgrade

Beheben Sie Probleme bei der Migration der Kopano-Datenbank nach einem MySQL- oder MariaDB-Upgrade, indem Sie Backups, Serverversionen, SQL-Modi, Zeichensatz, Schemastatus und Protokolle überprüfen.

So konfigurieren Sie die LDAP- und Active Directory-Authentifizierung in Nextcloud

So konfigurieren Sie die LDAP- und Active Directory-Authentifizierung in Nextcloud

Verbinden Sie Nextcloud mit LDAP oder Active Directory über sichere Transportwege, Benutzer- und Gruppenfilter, Anmeldeattribute und einen getesteten Rollout.

Android-Benachrichtigungen ohne Google-Dienste reparieren: UnifiedPush-Anleitung

Android-Benachrichtigungen ohne Google-Dienste reparieren: UnifiedPush-Anleitung

Beheben Sie Probleme mit Element-Android-Benachrichtigungen auf Google-freien Telefonen durch die Konfiguration von UnifiedPush, Android-Berechtigungen, Akkueinstellungen und zuverlässigen Verifizierungstests.

Beheben Sie die Nextcloud-Warnung „Datenbank enthält nicht alle Indizes“.

Beheben Sie die Nextcloud-Warnung „Datenbank enthält nicht alle Indizes“.

Die Warnung bezüglich fehlender Datenbankindizes in Nextcloud lässt sich mit dem offiziellen Befehl `occ` beheben. Sichern Sie Ihre Daten vorher, überprüfen Sie die Änderungen in der Vorschau, führen Sie die Reparatur durch und prüfen Sie das Ergebnis.

So konfigurieren Sie Single Sign-On (SSO) mit Keycloak in Element Web

So konfigurieren Sie Single Sign-On (SSO) mit Keycloak in Element Web

Konfigurieren Sie Keycloak SSO für Element Web, indem Sie OIDC mit Synapse verbinden, die genaue Callback-URL festlegen, Benutzeransprüche zuordnen und den Logout testen.