LINUX.ORG.RU
ФорумAdmin

Как правильно выставить приоритет процесса, чтобы он не ложил сайт

 , ,


2

3

Есть сервер на нем сайт с двумя физическими дисками. На одном диске сайт, на другом периодически создается резервная копия сайта. Использую nginx+php-fpm

Сайт довольно увесистый, много десятков тысяч файлов. При любом копировании файлов сайта, пока идет процесс копирования - сайт лежит. Полное копирование длится минут 15-20.

504 Gateway Time-out

В логе: upstream: «fastcgi://unix:/run/php/php7.0-socket.sock:»

Это значит nginx работает нормально, а вот php отваливается. Пробовал писать:

nice -n 20 rsync ****

или

nice -n 20 cp ****

Ничего не помогает. Процесс копирования или синхронизации забирает на себя все мощности сервера и пока он не закончится сайт будет лежать. Причем угнетает оно только php. Например всякие вебинтерфейсы и вебпанели управления сервером вполне себе работают без тормозов. Тот же nginx 504 ошибку отдает. Так же через консоль можно заходить по ssh и даже выполнять копирование других файлов. А вот php падает наглухо.

nice, ionice какая-то фигня из 90х.
Заюзай модный молодежный systemd-run и ограничь скорость чтения на девайс где файловая система /var например:

systemd-run --scope  -p BlockIOReadBandwidth="/dev/mapper/vg01-var 1M" bash
tar cpf -  /var  | pv >/dev/null


и ты увидишь, что макс скорость всего лишь 1MB/s.

Bers666 ★★★★★ ()
Ответ на: комментарий от Bers666

P.S. опция ограничения user/system CPU тоже полезна:

  -p CPUQuota=10%  

Bers666 ★★★★★ ()
Ответ на: комментарий от Legioner

тут много подходов (ограничить скорость, дать ниже IO приоритет, дать ниже CPU приоритет, дать меньше CPU полосу) - выбирай любой, man systemd.resource-control

Bers666 ★★★★★ ()

Не в теме php разработки, но зачем в общем случае бекапить исходный или там скомпилированный код, который по сути должен быть конечным задеплоеным на продакшен артефактом после сборки проекта? Где хранятся данные?

orm-i-auga ★★★★★ ()

не ложил

Не положил.

Ничего не помогает

systemd-run.

Deleted ()

... ну и в PHP OPcache настройте так, чтобы было минимальное обращение к диску - лучше при внесении изменений в PHP-код просто сбрасывать кэш (который в OPcache).

vinvlad ()
Ответ на: комментарий от orm-i-auga

Два физических диска. На одном сайт на втором бекап.

Так как диск с сайтом постоянно в работе, то он может выйти из строя физически.

Так как второй диск используется только для бекапа, то большую часть времени он простаивает и вероятность его физического износа не такая высокая как у диска сайта.

Maksimko ()
Ответ на: комментарий от Maksimko

Два физических диска. На одном сайт на втором бекап.

А если у вас рабочий диск грохнется посреди бэкапа? бэкап-копия будет уже не целостной...

vinvlad ()
Ответ на: комментарий от zolden

This was before systemd existed.

The article was from 2009 (before systemd).

anonymous ()

... Причем угнетает оно только php. Например всякие вебинтерфейсы и вебпанели управления сервером вполне себе работают без тормозов. Тот же nginx 504 ошибку отдает. Так же через консоль можно заходить по ssh и даже выполнять копирование других файлов. А вот php падает наглухо.

Ну раз всё другое летает, то тут более похоже на то, что в момент сканирования-копирования ваших десятков тысяч файлов что-то очень полезное для PHP выбрасывается из файлового кэша, а то еще и в swap попадает. Этот вариант не рассматривали?

vinvlad ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.