404 Not Found
este o eroare care apare atunci când încercați să accesați o pagină web sau o resursă care nu este găsită pe server. Nginx este un server web și un server proxy care poate fi utilizat pentru a servi site-uri web. 404 Not Found Nginx
înseamnă că pagina sau resursa solicitată nu a fost găsită pe serverul care utilizează Nginx.
Atunci când un script php nu a avut suficientă memorie RAM pentru a se executa și procesul său a fost oprit de sistem, Nginx poate returna și o eroare 404.
Aceasta este situația pe care o veți vedea atunci când scriptul rulează pentru o perioadă lungă de timp, după care returnează"404 Not Found
" sau pagina de eroare a motorului dumneavoastră. De obicei, această eroare este vizibilă și în jurnalul de depanare.
Problema se rezolvă prin eliberarea memoriei pe server, adesea acest lucru se poate întâmpla din cauza scurgerilor de memorie în php atunci când procesele php-fpm
ocupă aproape toată memoria de pe server. Prin repornirea php-fpm
această problemă este parțial rezolvată:
$ systemctl restart php-fpm
Poate fi evitată această situație în viitor? Răspunsul este da, se poate. Pentru a face acest lucru, trebuie să configurați repornirea automată a proceselor.
Pentru a configura procesele să repornească automat după un anumit număr de cereri în Linux, puteți utiliza instrumente de gestionare a proceselor precum systemd
sau supervisord
.
Creați un fișier cu extensia .service
în directorul /etc/systemd/system/
cu configurația proceselor dvs. De exemplu, fișierul 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
În acest exemplu, parametrul StartLimitBurst
stabilește numărul de reporniri înainte ca procesul să se oprească temporar.
După crearea fișierului de serviciu, executați comanda pentru a reporni systemd
și a activa noul serviciu:
sudo systemctl daemon-reload
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service
Instalați-l utilizând managerul de pachete al distribuției dvs. Linux. Apoi creați un fișier de configurare pentru procesul dvs. în directorul /etc/supervisor/conf.d/
. De exemplu, fișierul php-fpm.conf
:
[program:php-fpm]
command=/usr/sbin/php-fpm
autorestart=true
startretries=10
În acest exemplu, parametrul startretries
stabilește numărul de încercări de repornire a procesului.
După crearea fișierului de configurare, reporniți supervisord
:
sudo supervisorctl reread
sudo supervisorctl update
Acești pași vă vor ajuta să configurați procesele pentru a reporni automat după procesarea unui anumit număr de cereri în Linux.