Betalingsmetoder Abuse

Sådan løser du 404 Not Found Nginx, når hukommelsen er lav

  • Hjem
  • Videnbase
  • Sådan løser du 404 Not Found Nginx, når hukommelsen er lav
15.11.2023, 13:31

404 Not Found er en fejl, der opstår, når du forsøger at få adgang til en webside eller en ressource, der ikke findes på serveren. Nginx er en webserver og proxyserver, der kan bruges til at betjene hjemmesider. 404 Not Found Nginx betyder, at den ønskede side eller ressource ikke blev fundet på den server, der bruger Nginx.

Hvordan løses fejlen, hvis der ikke er nok RAM?

Når et php-script ikke havde nok RAM til at køre, og dets proces blev stoppet af systemet, kan Nginx også returnere en 404-fejl.

Det er den situation, du vil se, når scriptet kører i lang tid, hvorefter det returnerer"404 Not Found" eller din motors fejlside. Normalt er denne fejl også synlig i debug-loggen.

Sådan løser du 404 Not Found Nginx, når hukommelsen er lav

Problemet løses ved at frigøre hukommelse på serveren, ofte kan dette ske på grund af hukommelseslækager i php, når php-fpm-processer optager næsten al hukommelse på serveren. Ved at genstarte php-fpm er dette problem delvist løst:

$ systemctl restart php-fpm

Kan man undgå denne situation i fremtiden? Svaret er ja, det kan man. For at gøre det skal du konfigurere automatisk genstart af processer.

Konfiguration af automatisk genstart af processer

For at konfigurere processer til at genstarte automatisk efter et vist antal forespørgsler i Linux kan du bruge processtyringsværktøjer som systemd eller supervisord.

systemd

Opret en fil med filtypenavnet .service i biblioteket /etc/systemd/system/ med din proceskonfiguration. 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 eksempel indstiller parameteren StartLimitBurst antallet af genstarter, før processen lukkes midlertidigt ned.

Når du har oprettet servicefilen, skal du køre kommandoen for at genstarte systemd og aktivere den nye service:

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

supervisord

Installer den ved hjælp af din Linux-distributions pakkehåndtering. Opret derefter en konfigurationsfil til din proces i biblioteket /etc/supervisor/conf. d/. For eksempel filen php-fpm.conf:

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

I dette eksempel indstiller parameteren startretries antallet af forsøg på at genstarte processen.

Når du har oprettet konfigurationsfilen, skal du genstarte supervisord:

sudo supervisorctl reread
sudo supervisorctl update

Disse trin hjælper dig med at konfigurere processer til at genstarte automatisk efter at have behandlet et bestemt antal forespørgsler i Linux.