Начини на плащане 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.