404 Not Found - помилка, яка виникає під час спроби доступу до веб-сторінки або ресурсу, який не знайдено на сервері. Nginx - це веб-сервер і проксі-сервер, який може використовуватися для обслуговування веб-сайтів. 404 Not Found Nginx означає, що запитувана сторінка або ресурс не був знайдений на сервері, який використовує Nginx.
Коли php-скрипту не вистачило RAM для виконання, і його процес був зупинений системою, Nginx теж може повернути помилку 404.
Таку ситуацію ви спостерігатимете, коли скрипт тривалий час виконується, після чого видає"404 Not Found" або сторінку помилки вашого движка. Зазвичай цю несправність теж видно у налагоджувальному балці.
Проблема вирішується шляхом вивільнення пам'яті на сервері, часто таке може виникати через витоки пам'яті в php, коли процеси php-fpm займають майже всю пам'ять на сервері. Шляхом перезапуску php-fpm цю проблему частково вдається вирішити:
$ systemctl restart 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 і активації нової служби:
sudo systemctl daemon-reload
sudo systemctl enable php-fpm.service
sudo systemctl start php-fpm.service
Встановіть його за допомогою менеджера пакетів вашого дистрибутива Linux. Потім створіть конфігураційний файл для вашого процесу в каталозі /etc/supervisor/conf.d/. Наприклад, файл php-fpm.conf:
[program:php-fpm]
command=/usr/sbin/php-fpm
autorestart=true
startretries=10
У цьому прикладі параметр startretries встановлює кількість спроб перезапуску процесу.
Після створення конфігураційного файлу перезапустіть supervisord:
sudo supervisorctl reread
sudo supervisorctl update
Ці кроки допоможуть вам налаштувати автоматичний перезапуск процесів після обробки певної кількості запитів у Linux.