Betalingsmåter Abuse

Hvordan fikse 404 Not Found Nginx når minnet er lavt

15.11.2023, 13:31

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.

Hvordan fikse 404 Not Found Nginx når minnet er lavt

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.