Metodi di pagamento Abuse

Come risolvere il 404 Not Found di Nginx quando la memoria è insufficiente

15.11.2023, 13:31

404 Not Found è un errore che si verifica quando si cerca di accedere a una pagina web o a una risorsa non trovata sul server. Nginx è un server web e un server proxy che può essere utilizzato per servire siti web. 404 Not Found Nginx significa che la pagina o la risorsa richiesta non è stata trovata sul server che utilizza Nginx.

Come risolvere l'errore se la RAM non è sufficiente?

Quando uno script php non ha abbastanza RAM per essere eseguito e il suo processo è stato fermato dal sistema, Nginx può anche restituire un errore 404.

Questa è la situazione che si verifica quando lo script viene eseguito per molto tempo, dopodiché restituisce"404 Not Found" o la pagina di errore del motore. Di solito questo errore è visibile anche nel log di debug.

Come risolvere il 404 Not Found di Nginx quando la memoria è insufficiente

Il problema si risolve liberando memoria sul server, spesso questo può accadere a causa di perdite di memoria in php quando i processi php-fpm occupano quasi tutta la memoria del server. Riavviando php-fpm il problema è parzialmente risolto:

$ systemctl restart php-fpm

È possibile evitare questa situazione in futuro? La risposta è sì, è possibile. Per farlo, è necessario configurare il riavvio automatico dei processi.

Configurazione del riavvio automatico dei processi

Per configurare i processi in modo che si riavviino automaticamente dopo un certo numero di richieste in Linux, si possono usare strumenti di gestione dei processi come systemd o supervisord.

systemd

Creare un file con estensione .service nella directory /etc/systemd/system/ con la configurazione dei processi. Per esempio, il file 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

In questo esempio, il parametro StartLimitBurst imposta il numero di riavvii prima che il processo si chiuda temporaneamente.

Dopo aver creato il file di servizio, eseguire il comando per riavviare systemd e attivare il nuovo servizio:

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

supervisord

Installare il servizio utilizzando il gestore di pacchetti della distribuzione Linux. Quindi creare un file di configurazione per il processo nella directory /etc/supervisor/conf.d/. Ad esempio, il file php-fpm.conf:

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

In questo esempio, il parametro startretries imposta il numero di tentativi di riavvio del processo.

Dopo aver creato il file di configurazione, riavviare supervisord:

sudo supervisorctl reread
sudo supervisorctl update

Questi passaggi vi aiuteranno a configurare i processi in modo che si riavviino automaticamente dopo l'elaborazione di un certo numero di richieste in Linux.