Способи оплати Abuse

Як усунути 404 Not Found Nginx у разі нестачі пам'яті

15.11.2023, 13:31

404 Not Found - помилка, яка виникає під час спроби доступу до веб-сторінки або ресурсу, який не знайдено на сервері. Nginx - це веб-сервер і проксі-сервер, який може використовуватися для обслуговування веб-сайтів. 404 Not Found Nginx означає, що запитувана сторінка або ресурс не був знайдений на сервері, який використовує Nginx.

Як усунути помилку, якщо недостатньо оперативної пам'яті?

Коли php-скрипту не вистачило RAM для виконання, і його процес був зупинений системою, Nginx теж може повернути помилку 404.

Таку ситуацію ви спостерігатимете, коли скрипт тривалий час виконується, після чого видає"404 Not Found" або сторінку помилки вашого движка. Зазвичай цю несправність теж видно у налагоджувальному балці.

Як усунути 404 Not Found Nginx у разі нестачі пам'яті

Проблема вирішується шляхом вивільнення пам'яті на сервері, часто таке може виникати через витоки пам'яті в php, коли процеси php-fpm займають майже всю пам'ять на сервері. Шляхом перезапуску php-fpm цю проблему частково вдається вирішити:

$ systemctl restart php-fpm

Чи можна уникнути цієї ситуації надалі? Відповідь - так, можна. Для цього необхідно налаштувати автоматичний перезапуск процесів.

Налаштовуємо автоматичний перезапуск процесів

Для налаштування автоматичного перезапуску процесів після опрацювання певної кількості запитів у Linux, ви можете використовувати інструменти керування процесами, такі як systemd або supervisord.

systemd

Створіть файл із розширенням .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

supervisord

Встановіть його за допомогою менеджера пакетів вашого дистрибутива 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.