404 Not Found - ошибка, которая возникает при попытке доступа к веб-странице или ресурсу, который не найден на сервере. Nginx - это веб-сервер и прокси-сервер, который может использоваться для обслуживания веб-сайтов. 404 Not Found Nginx означает, что запрашиваемая страница или ресурс не был найден на сервере, который использует Nginx.
Когда php-скрипту не хватило ОЗУ для выполнения, и его процесс был остановлен системой, Nginx тоже может вернуть ошибку 404.
Такую ситуацию вы будете наблюдать, когда скрипт продолжительное время выполняется, после чего выдает "404 Not Found" или страница ошибки вашего движка. Обычно эта неисправность тоже видна в отладочном логе.
Проблема решается путем высвобождения памяти на сервере, часто такое может возникать из-за утечек памяти в php, когда процессы php-fpm занимают почти всю память на сервере. Путем перезапуска php-fpm данную проблему части удается решить:
Можно ли избежать этой ситуации в дальнейшем? Ответ - да, можно. Для этого необходимо настроить автоматический перезапуск процессов.
Для настройки автоматического перезапуска процессов после обработки определенного количества запросов в Linux, вы можете использовать инструменты управления процессами, такие как systemd или supervisord.
Создайте файл с расширением .service в каталоге /etc/systemd/system/ с конфигурацией вашего процесса. Например, файл 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
В этом примере, параметр StartLimitBurst устанавливает количество перезапусков до временного отключения процесса.
После создания файла службы, выполните команду для перезапуска systemd и активации новой службы:
Установите его с помощью менеджера пакетов вашего дистрибутива Linux. Затем создайте конфигурационный файл для вашего процесса в каталоге /etc/supervisor/conf.d/. Например, файл php-fpm.conf:
В этом примере, параметр startretries устанавливает количество попыток перезапуска процесса.
После создания конфигурационного файла, перезапустите supervisord:
Эти шаги помогут вам настроить автоматический перезапуск процессов после обработки определенного количества запросов в Linux.