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