Métodos de pago Abuse

Cómo arreglar 404 Not Found Nginx cuando la memoria es baja

15.11.2023, 13:31

404 No Encontrado es un error que se produce cuando se intenta acceder a una página web o recurso que no se encuentra en el servidor. Nginx es un servidor web y servidor proxy que se puede utilizar para servir sitios web. 404 Not Found Nginx significa que la página o recurso solicitado no se encontró en el servidor que utiliza Nginx.

¿Cómo resolver el error si no hay suficiente RAM?

Cuando un script php no tiene suficiente RAM para ejecutarse y su proceso fue detenido por el sistema, Nginx también puede devolver un error 404.

Esta es la situación que verás cuando el script se ejecuta durante mucho tiempo, tras lo cual devuelve"404 Not Found" o la página de error de tu motor. Normalmente este fallo también es visible en el registro de depuración.

Cómo arreglar 404 Not Found Nginx cuando la memoria es baja

El problema se soluciona liberando memoria en el servidor, a menudo esto puede ocurrir debido a fugas de memoria en php cuando los procesos php-fpm ocupan casi toda la memoria del servidor. Reiniciando php-fpm este problema se soluciona parcialmente:

$ systemctl restart php-fpm

¿Se puede evitar esta situación en el futuro? La respuesta es sí, se puede. Para ello, es necesario configurar el reinicio automático de procesos.

Configuración del reinicio automático de procesos

Para configurar los procesos para que se reinicien automáticamente después de un cierto número de peticiones en Linux, puedes utilizar herramientas de gestión de procesos como systemd o supervisord.

systemd

Cree un archivo con la extensión .service en el directorio /etc/systemd/system/ con su configuración de procesos. Por ejemplo, el archivo 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

En este ejemplo, el parámetro StartLimitBurst establece el número de reinicios antes de que el proceso se apague temporalmente.

Después de crear el archivo de servicio, ejecute el comando para reiniciar systemd y activar el nuevo servicio:

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

supervisord

Instálalo utilizando el gestor de paquetes de tu distribución de Linux. A continuación, cree un archivo de configuración para su proceso en el directorio /etc/supervisor/conf.d/. Por ejemplo, el archivo php-fpm.conf:

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

En este ejemplo, el parámetro startretries establece el número de intentos para reiniciar el proceso.

Después de crear el archivo de configuración, reinicie supervisord:

sudo supervisorctl reread
sudo supervisorctl update

Estos pasos le ayudarán a configurar procesos para que se reinicien automáticamente después de procesar un cierto número de peticiones en Linux.