Modes de paiement Abuse

Comment corriger 404 Not Found Nginx lorsque la mémoire est faible

15.11.2023, 13:31

404 Not Found est une erreur qui se produit lorsque vous essayez d'accéder à une page web ou à une ressource qui n'est pas trouvée sur le serveur. Nginx est un serveur web et un serveur proxy qui peut être utilisé pour servir des sites web. 404 Not Found Nginx signifie que la page ou la ressource demandée n'a pas été trouvée sur le serveur qui utilise Nginx.

Comment résoudre l'erreur s'il n'y a pas assez de RAM ?

Lorsqu'un script php n'a pas assez de mémoire vive pour s'exécuter et que son processus a été arrêté par le système, Nginx peut également renvoyer une erreur 404.

C'est la situation que vous verrez lorsque le script s'exécute pendant un long moment, après quoi il renvoie"404 Not Found" ou la page d'erreur de votre moteur. En général, cette erreur est également visible dans le journal de débogage.

Comment corriger 404 Not Found Nginx lorsque la mémoire est faible

Le problème est résolu en libérant de la mémoire sur le serveur, ce qui est souvent dû à des fuites de mémoire dans php, lorsque les processus php-fpm occupent presque toute la mémoire sur le serveur. En redémarrant php-fpm , le problème est partiellement résolu :

$ systemctl restart php-fpm

Cette situation peut-elle être évitée à l'avenir ? La réponse est oui. Pour ce faire, vous devez configurer le redémarrage automatique des processus.

Configuration du redémarrage automatique des processus

Pour configurer le redémarrage automatique des processus après un certain nombre de requêtes sous Linux, vous pouvez utiliser des outils de gestion de processus tels que systemd ou supervisord.

systemd

Créez un fichier avec l'extension .service dans le répertoire /etc/systemd/system/ avec votre configuration de processus. Par exemple, le fichier 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

Dans cet exemple, le paramètre StartLimitBurst définit le nombre de redémarrages avant l'arrêt temporaire du processus.

Après avoir créé le fichier de service, exécutez la commande pour redémarrer systemd et activer le nouveau service :

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

supervisord

Installez-le à l'aide du gestionnaire de paquets de votre distribution Linux. Créez ensuite un fichier de configuration pour votre processus dans le répertoire /etc/supervisor/conf.d/. Par exemple, le fichier php-fpm.conf :

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

Dans cet exemple, le paramètre startretries définit le nombre de tentatives de redémarrage du processus.

Après avoir créé le fichier de configuration, redémarrez supervisord:

sudo supervisorctl reread
sudo supervisorctl update

Ces étapes vous aideront à configurer les processus pour qu'ils redémarrent automatiquement après avoir traité un certain nombre de requêtes sous Linux.