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.
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.
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.
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.
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
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.