Způsoby platby Abuse

Jak opravit 404 Not Found Nginx při nedostatku paměti

15.11.2023, 13:31

404 Not Found je chyba, která se objeví při pokusu o přístup k webové stránce nebo zdroji, který nebyl na serveru nalezen. Nginx je webový server a proxy server, který lze použít k obsluze webových stránek. Chyba 404 Not Found Nginx znamená, že požadovaná stránka nebo prostředek nebyly na serveru, který používá Nginx, nalezeny.

Jak vyřešit chybu, pokud není k dispozici dostatek paměti RAM?

Pokud skript php neměl dostatek paměti RAM ke spuštění a jeho proces byl systémem zastaven, může systém Nginx také vrátit chybu 404.

Tuto situaci uvidíte, když skript běží dlouhou dobu a poté vrátízprávu "404 Not Found" nebo chybovou stránku vašeho enginu. Obvykle je tato chyba viditelná také v protokolu ladění.

Jak opravit 404 Not Found Nginx při nedostatku paměti

Problém se řeší uvolněním paměti na serveru, často k tomu může dojít kvůli úniku paměti v php, kdy procesy php-fpm zabírají téměř veškerou paměť na serveru. Restartováním php-fpm se tento problém částečně vyřeší:

$ systemctl restart php-fpm

Lze této situaci do budoucna předejít? Odpověď zní ano, lze. K tomu je třeba nakonfigurovat automatické restartování procesů.

Konfigurace automatického restartu procesů

Chcete-li v systému Linux nakonfigurovat automatické restartování procesů po určitém počtu požadavků, můžete použít nástroje pro správu procesů, jako je systemd nebo supervisord.

systemd

V adresáři /etc/systemd/system/ vytvořte soubor s příponou .service s konfigurací procesů. Například soubor 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 příkladu parametr StartLimitBurst nastavuje počet restartů před dočasným vypnutím procesu.

Po vytvoření souboru služby spusťte příkaz pro restart systemd a aktivaci nové služby:

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

supervisord .

Nainstalujte ji pomocí správce balíčků vaší linuxové distribuce. Poté vytvořte konfigurační soubor pro svůj proces v adresáři /etc/supervisor/conf.d/. Například soubor php-fpm.conf:

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

V tomto příkladu parametr startretries nastavuje počet pokusů o restartování procesu.

Po vytvoření konfiguračního souboru restartujte supervisord:

sudo supervisorctl reread
sudo supervisorctl update

Tyto kroky vám pomohou nastavit automatické restartování procesů po zpracování určitého počtu požadavků v systému Linux.