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