"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.
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.
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.
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
.
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
Į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.