Formas de pagamento Abuse

Como corrigir o 404 Not Found Nginx quando a memória é baixa

15.11.2023, 13:31

404 Not Found (404 não encontrado) é um erro que ocorre quando se tenta aceder a uma página Web ou a um recurso que não foi encontrado no servidor. O Nginx é um servidor Web e um servidor proxy que pode ser utilizado para servir sítios Web. 404 Not Found Nginx significa que a página ou o recurso solicitado não foi encontrado no servidor que utiliza o Nginx.

Como resolver o erro se não houver RAM suficiente?

Quando um script php não tem memória RAM suficiente para executar e o seu processo foi interrompido pelo sistema, o Nginx também pode devolver um erro 404.

Esta é a situação que se verifica quando o script é executado durante um longo período de tempo, após o qual retorna"404 Not Found" ou a página de erro do seu motor. Normalmente, esta falha também é visível no registo de depuração.

Como corrigir o 404 Not Found Nginx quando a memória é baixa

O problema é resolvido libertando memória no servidor. Muitas vezes, isto pode acontecer devido a fugas de memória no php quando os processos php-fpm ocupam quase toda a memória do servidor. Ao reiniciar o php-fpm , o problema é parcialmente resolvido:

$ systemctl restart php-fpm

Esta situação pode ser evitada no futuro? A resposta é sim, é possível. Para tal, é necessário configurar o reinício automático dos processos.

Configurando o reinício automático de processos

Para configurar os processos para reiniciarem automaticamente após um determinado número de pedidos no Linux, pode utilizar ferramentas de gestão de processos como o systemd ou o supervisord.

systemd

Crie um ficheiro com a extensão .service no diretório /etc/systemd/system/ com a configuração do seu processo. Por exemplo, o arquivo 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

Neste exemplo, o parâmetro StartLimitBurst define o número de reinicializações antes que o processo seja temporariamente encerrado.

Depois de criar o arquivo de serviço, execute o comando para reiniciar o systemd e ativar o novo serviço:

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

supervisord

Instale-o usando o gerenciador de pacotes da sua distribuição Linux. Em seguida, crie um arquivo de configuração para o seu processo no diretório /etc/supervisor/conf.d/. Por exemplo, o arquivo php-fpm.conf:

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

Neste exemplo, o parâmetro startretries define o número de tentativas para reiniciar o processo.

Depois de criar o arquivo de configuração, reinicie o supervisord:

sudo supervisorctl reread
sudo supervisorctl update

Essas etapas o ajudarão a configurar processos para reiniciar automaticamente após o processamento de um determinado número de solicitações no Linux.