Metody płatności Abuse

Jak naprawić błąd 404 Not Found Nginx przy niskim poziomie pamięci?

15.11.2023, 13:31

404 Not Found to błąd, który pojawia się podczas próby uzyskania dostępu do strony internetowej lub zasobu, który nie został znaleziony na serwerze. Nginx to serwer WWW i serwer proxy, który może być używany do obsługi stron internetowych. 404 Not Found Nginx oznacza, że żądana strona lub zasób nie zostały znalezione na serwerze korzystającym z Nginx.

Jak rozwiązać błąd, jeśli nie ma wystarczającej ilości pamięci RAM?

Gdy skrypt php nie ma wystarczającej ilości pamięci RAM do wykonania i jego proces został zatrzymany przez system, Nginx może również zwrócić błąd 404.

Jest to sytuacja, którą można zaobserwować, gdy skrypt działa przez długi czas, po czym zwraca"404 Not Found" lub stronę błędu silnika. Zazwyczaj błąd ten jest również widoczny w dzienniku debugowania.

Jak naprawić błąd 404 Not Found Nginx przy niskim poziomie pamięci?

Problem jest rozwiązywany przez zwolnienie pamięci na serwerze, często może się to zdarzyć z powodu wycieków pamięci w php, gdy procesy php-fpm zajmują prawie całą pamięć na serwerze. Ponowne uruchomienie php-fpm częściowo rozwiązuje ten problem:

$ systemctl restart php-fpm

Czy można uniknąć tej sytuacji w przyszłości? Odpowiedź brzmi: tak, można. Aby to zrobić, należy skonfigurować automatyczne ponowne uruchamianie procesów.

Konfigurowanie automatycznego restartu procesów

Aby skonfigurować procesy do automatycznego restartu po określonej liczbie żądań w systemie Linux, można użyć narzędzi do zarządzania procesami, takich jak systemd lub supervisord.

systemd

Utwórz plik z rozszerzeniem .service w katalogu /etc/systemd/system/ z konfiguracją procesu. Na przykład plik 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

W tym przykładzie parametr StartLimitBurst ustawia liczbę restartów przed tymczasowym wyłączeniem procesu.

Po utworzeniu pliku usługi uruchom polecenie, aby ponownie uruchomić systemd i aktywować nową usługę:

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

supervisord

Zainstaluj go za pomocą menedżera pakietów swojej dystrybucji Linuksa. Następnie utwórz plik konfiguracyjny dla swojego procesu w katalogu /etc/supervisor/conf.d/. Na przykład plik php-fpm.conf:

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

W tym przykładzie parametr startretries ustawia liczbę prób ponownego uruchomienia procesu.

Po utworzeniu pliku konfiguracyjnego należy ponownie uruchomić supervisord:

sudo supervisorctl reread
sudo supervisorctl update

Te kroki pomogą skonfigurować procesy do automatycznego restartu po przetworzeniu określonej liczby żądań w systemie Linux.