Mokėjimo būdai Abuse

Kaip nustatyti "404 Not Found Nginx", kai yra mažai atminties

15.11.2023, 13:31

"404 Not Found" - tai klaida, kuri atsiranda, kai bandote pasiekti žiniatinklio puslapį arba išteklių, kurių serveryje nerasta. Nginx yra žiniatinklio serveris ir tarpinis serveris, kuris gali būti naudojamas svetainėms aptarnauti. 404 Not Found Nginx reiškia, kad prašomas puslapis arba išteklius nebuvo rastas serveryje, kuriame naudojamas Nginx.

Kaip išspręsti klaidą, jei nepakanka operatyviosios atminties?

Kai php scenarijui vykdyti neužteko RAM ir sistema sustabdė jo procesą, "Nginx" taip pat gali grąžinti 404 klaidą.

Tokią situaciją pamatysite, kai scenarijus veikia ilgai, o po to grąžina"404 Not Found" arba jūsų variklio klaidos puslapį. Paprastai ši klaida taip pat matoma derinimo žurnale.

Kaip nustatyti

Problema išsprendžiama atlaisvinant atmintį serveryje, dažnai taip gali atsitikti dėl php atminties nutekėjimo, kai php-fpm procesai užima beveik visą serverio atmintį. Iš naujo paleidus php-fpm ši problema iš dalies išsprendžiama:

$ systemctl restart php-fpm

Ar galima išvengti šios situacijos ateityje? Atsakymas - taip, galima. Norėdami tai padaryti, turite sukonfigūruoti automatinį procesų paleidimą iš naujo.

Automatinio procesų paleidimo iš naujo konfigūravimas

Norėdami sukonfigūruoti automatinį procesų paleidimą iš naujo po tam tikro skaičiaus užklausų "Linux" sistemoje, galite naudoti procesų valdymo įrankius, pavyzdžiui, systemd arba supervisord.

systemd

Sukurkite failą su plėtiniu .service kataloge /etc/systemd/system/ su savo procesų konfigūracija. Pavyzdžiui, failas 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

Šiame pavyzdyje parametru StartLimitBurst nustatomas pakartotinių paleidimų skaičius prieš laikinai išjungiant procesą.

Sukūrę paslaugos failą, paleiskite komandą, kad iš naujo paleistumėte systemd ir aktyvuotumėte naująją paslaugą:

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

supervisord .

Įdiekite ją naudodami savo "Linux" distributyvo paketų tvarkyklę. Tada sukurkite savo proceso konfigūracijos failą /etc/supervisor/conf.d/ kataloge. Pavyzdžiui, failą php-fpm.conf:

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

Šiame pavyzdyje parametru startretries nustatomas bandymų iš naujo paleisti procesą skaičius.

Sukūrę konfigūracijos failą, iš naujo paleiskite "supervisord":

sudo supervisorctl reread
sudo supervisorctl update

Šie veiksmai padės jums sukonfigūruoti procesus taip, kad jie būtų automatiškai paleidžiami iš naujo apdorojus tam tikrą skaičių užklausų "Linux" sistemoje.