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.