Maksutavat Abuse

Miten korjata 404 Not Found Nginx kun muisti on vähissä?

15.11.2023, 13:31

404 Not Found on virhe, joka ilmenee, kun yrität käyttää verkkosivua tai resurssia, jota ei löydy palvelimelta. Nginx on verkkopalvelin ja välityspalvelin, jota voidaan käyttää verkkosivustojen palvelemiseen. 404 Not Found Nginx tarkoittaa, että pyydettyä sivua tai resurssia ei löytynyt Nginxiä käyttävältä palvelimelta.

Miten ratkaista virhe, jos RAM-muisti ei riitä?

Kun php-skriptillä ei ollut riittävästi RAM-muistia suoritettavaksi ja järjestelmä pysäytti sen prosessin, Nginx voi myös palauttaa 404-virheen.

Tämä on tilanne, jonka näet, kun komentosarjaa suoritetaan pitkään, minkä jälkeen se palauttaa"404 Not Found" tai moottorisi virhesivun. Yleensä tämä virhe näkyy myös debug-lokissa.

Miten korjata 404 Not Found Nginx kun muisti on vähissä?

Ongelma ratkaistaan vapauttamalla muistia palvelimelta, usein tämä voi johtua php:n muistivuodoista, kun php-fpm-prosessit vievät lähes kaiken muistin palvelimelta. Käynnistämällä php-fpm uudelleen ongelma on osittain ratkaistu:

$ systemctl restart php-fpm

Voidaanko tämä tilanne välttää tulevaisuudessa? Vastaus on kyllä, voidaan. Tätä varten sinun on määritettävä prosessien automaattinen uudelleenkäynnistys.

Prosessien automaattisen uudelleenkäynnistyksen määrittäminen

Jos haluat määrittää prosessit käynnistymään automaattisesti uudelleen tietyn määrän pyyntöjä jälkeen Linuxissa, voit käyttää prosessien hallintatyökaluja, kuten systemd:tä tai supervisordia.

systemd

Luo /etc/systemd/system/-hakemistoon .service-päätteinen tiedosto, jossa on prosessien konfiguraatio. Esimerkiksi tiedosto 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

Tässä esimerkissä StartLimitBurst-parametrilla määritetään uudelleenkäynnistysten määrä ennen prosessin väliaikaista sammuttamista.

Kun olet luonut palvelutiedoston, suorita komento käynnistääksesi systemd:n uudelleen ja aktivoidaksesi uuden palvelun:

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

supervisord

Asenna se Linux-jakelusi paketinhallinnan avulla. Luo sitten prosessin konfigurointitiedosto hakemistoon /etc/supervisor/conf.d/. Esimerkiksi tiedosto php-fpm.conf:

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

Tässä esimerkissä parametri startretries määrittää prosessin uudelleenkäynnistysyritysten määrän.

Kun olet luonut asetustiedoston, käynnistä supervisord uudelleen:

sudo supervisorctl reread
sudo supervisorctl update

Näiden vaiheiden avulla voit määrittää prosessit käynnistymään automaattisesti uudelleen tietyn määrän pyyntöjen käsittelyn jälkeen Linuxissa.