Zahlungsmethoden Abuse

Wie man 404 Not Found Nginx behebt, wenn der Speicher knapp ist

15.11.2023, 13:31

404 Not Found ist ein Fehler, der auftritt, wenn Sie versuchen, auf eine Webseite oder eine Ressource zuzugreifen, die auf dem Server nicht gefunden wird. Nginx ist ein Webserver und Proxyserver, der für die Bereitstellung von Websites verwendet werden kann. 404 Not Found Nginx bedeutet, dass die angeforderte Seite oder Ressource auf dem Server, der Nginx verwendet, nicht gefunden wurde.

Wie behebt man den Fehler, wenn nicht genug RAM vorhanden ist?

Wenn ein PHP-Skript nicht genügend Arbeitsspeicher für die Ausführung hatte und sein Prozess vom System gestoppt wurde, kann Nginx auch einen 404-Fehler zurückgeben.

Dies ist der Fall, wenn das Skript lange Zeit läuft und dann"404 Not Found" oder die Fehlerseite Ihrer Engine zurückgibt. Normalerweise ist dieser Fehler auch im Debug-Log sichtbar.

Wie man 404 Not Found Nginx behebt, wenn der Speicher knapp ist

Das Problem lässt sich lösen, indem man den Speicher auf dem Server freigibt. Oft kann dies aufgrund von Speicherlecks in php passieren, wenn php-fpm-Prozesse fast den gesamten Speicher auf dem Server belegen. Durch einen Neustart von php-fpm ist dieses Problem teilweise gelöst:

$ systemctl restart php-fpm

Kann diese Situation in Zukunft vermieden werden? Die Antwort lautet: Ja, das kann man. Dazu müssen Sie den automatischen Neustart von Prozessen konfigurieren.

Konfigurieren des automatischen Neustarts von Prozessen

Um Prozesse so zu konfigurieren, dass sie nach einer bestimmten Anzahl von Anfragen unter Linux automatisch neu gestartet werden, können Sie Prozessverwaltungswerkzeuge wie systemd oder supervisord verwenden.

systemd

Erstellen Sie eine Datei mit der Erweiterung .service im Verzeichnis /etc/systemd/system/ mit Ihrer Prozesskonfiguration. Zum Beispiel die Datei php-fpm.service

[Unit]
Description=PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
ExecStart=/usr/sbin/php-fpm
Restart=always
RestartSec=3
StartLimitInterval=0
StartLimitBurst=10
[Install]
WantedBy=multi-user.target

In diesem Beispiel legt der Parameter StartLimitBurst die Anzahl der Neustarts fest, bevor der Prozess vorübergehend heruntergefahren wird.

Nachdem Sie die Dienstdatei erstellt haben, führen Sie den Befehl aus, um systemd neu zu starten und den neuen Dienst zu aktivieren:

sudo systemctl daemon-reload
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service

supervisord

Installieren Sie ihn mit dem Paketmanager Ihrer Linux-Distribution. Erstellen Sie dann eine Konfigurationsdatei für Ihren Prozess im Verzeichnis /etc/supervisor/conf.d/. Zum Beispiel die Datei php-fpm.conf:

[program:php-fpm]
command=/usr/sbin/php-fpm
autorestart=true
startretries=10

In diesem Beispiel legt der Parameter startretries die Anzahl der Versuche zum Neustart des Prozesses fest.

Nachdem Sie die Konfigurationsdatei erstellt haben, starten Sie supervisord neu:

sudo supervisorctl reread
sudo supervisorctl update

Mit diesen Schritten können Sie Prozesse so konfigurieren, dass sie nach der Verarbeitung einer bestimmten Anzahl von Anfragen unter Linux automatisch neu gestartet werden.