Spôsoby platby Abuse

Ako opraviť 404 Not Found Nginx pri nedostatku pamäte

15.11.2023, 13:31

404 Not Found je chyba, ktorá sa vyskytne pri pokuse o prístup k webovej stránke alebo zdroju, ktorý sa na serveri nenachádza. Nginx je webový server a proxy server, ktorý možno použiť na obsluhu webových stránok. Chyba 404 Not Found Nginx znamená, že požadovaná stránka alebo zdroj sa nenašli na serveri, ktorý používa Nginx.

Ako vyriešiť chybu, ak nie je k dispozícii dostatok pamäte RAM?

Keď php skript nemal dostatok pamäte RAM na vykonanie a jeho proces bol zastavený systémom, Nginx môže tiež vrátiť chybu 404.

Túto situáciu uvidíte, keď skript beží dlhý čas, po ktorom vráti"404 Not Found" alebo chybovú stránku vášho motora. Zvyčajne je táto chyba viditeľná aj v protokole ladenia.

Ako opraviť 404 Not Found Nginx pri nedostatku pamäte

Problém sa rieši uvoľnením pamäte na serveri, často sa to môže stať v dôsledku úniku pamäte v php, keď procesy php-fpm zaberajú takmer všetku pamäť na serveri. Reštartovaním php-fpm sa tento problém čiastočne vyrieši:

$ systemctl restart php-fpm

Dá sa tejto situácii v budúcnosti predísť? Odpoveď je áno, môžete. Ak to chcete urobiť, musíte nakonfigurovať automatické reštartovanie procesov.

Konfigurácia automatického reštartu procesov

Na konfiguráciu automatického reštartu procesov po určitom počte požiadaviek v systéme Linux môžete použiť nástroje na správu procesov, ako je systemd alebo supervisord.

Systemd

Vytvorte súbor s príponou .service v adresári /etc/systemd/system/ s konfiguráciou procesov. Napríklad súbor 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

V tomto príklade parameter StartLimitBurst nastavuje počet reštartov pred dočasným vypnutím procesu.

Po vytvorení súboru služby spustite príkaz na reštartovanie systemd a aktiváciu novej služby:

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

supervisord

Nainštalujte ju pomocou správcu balíkov vašej distribúcie Linuxu. Potom vytvorte konfiguračný súbor pre váš proces v adresári /etc/supervisor/conf.d/. Napríklad súbor php-fpm.conf:

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

V tomto príklade parameter startretries nastavuje počet pokusov o reštartovanie procesu.

Po vytvorení konfiguračného súboru reštartujte supervisord:

sudo supervisorctl reread
sudo supervisorctl update

Tieto kroky vám pomôžu nakonfigurovať procesy tak, aby sa automaticky reštartovali po spracovaní určitého počtu požiadaviek v systéme Linux.