404 Not Found er en feil som oppstår når du prøver å få tilgang til en nettside eller en ressurs som ikke finnes på serveren. Nginx er en webserver og proxy-server som kan brukes til å betjene nettsteder. 404 Not Found Nginx betyr at den forespurte siden eller ressursen ikke ble funnet på serveren som bruker Nginx.
Hvordan løse feilen hvis det ikke er nok RAM?
Når et php-skript ikke hadde nok RAM til å kjøre og prosessen ble stoppet av systemet, kan Nginx også returnere en 404-feil.
Dette er situasjonen du vil se når skriptet kjører i lang tid, hvoretter det returnerer"404 Not Found" eller motorens feilside. Vanligvis er denne feilen også synlig i feilsøkingsloggen.
Problemet løses ved å frigjøre minne på serveren, ofte kan dette skje på grunn av minnelekkasjer i php når php-fpm-prosesser tar opp nesten alt minnet på serveren. Ved å starte php-fpm på nytt er dette problemet delvis løst:
$ systemctl restart php-fpm
Kan denne situasjonen unngås i fremtiden? Svaret er ja, det kan du. For å gjøre dette må du konfigurere automatisk omstart av prosesser.
Konfigurere automatisk omstart av prosesser
For å konfigurere prosesser til å starte på nytt automatisk etter et visst antall forespørsler i Linux, kan du bruke prosessadministrasjonsverktøy som systemd eller supervisord.
systemd
Opprett en fil med filtypen .service i katalogen /etc/systemd/system/ med prosesskonfigurasjonen din. For eksempel filen 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
I dette eksempelet angir StartLimitBurst-parameteren antall omstarter før prosessen midlertidig slås av.
Når du har opprettet tjenestefilen, kjører du kommandoen for å starte systemd på nytt og aktivere den nye tjenesten:
sudo systemctl daemon-reload
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service
supervisord
Installer den ved hjelp av Linux-distribusjonens pakkebehandler. Deretter oppretter du en konfigurasjonsfil for prosessen din i katalogen /etc/supervisor/conf.d/. For eksempel filen php-fpm.conf:
[program:php-fpm]
command=/usr/sbin/php-fpm
autorestart=true
startretries=10
I dette eksempelet angir parameteren startretries antall forsøk på å starte prosessen på nytt.
Når du har opprettet konfigurasjonsfilen, starter du supervisord på nytt:
sudo supervisorctl reread
sudo supervisorctl update
Disse trinnene hjelper deg med å konfigurere prosesser til å starte på nytt automatisk etter å ha behandlet et visst antall forespørsler i Linux.
