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