DmitryKoterov
@DmitryKoterov

Влияние nice и Load Average на производительность веб-сервера?

Меня вот какой вопрос беспокоит в последнее время: есть машина, на которой крутится:

— веб-сервер (php-fpm) с nice=0;

— и еще несколько десятков некритичных к реалтаймовости демонов с nice=10;

— всего процессов на машине — порядка 400 (в сумме по всем виртуалкам openvz).



Основную нагрузку делают демоны. Диск не загружен. При этом Load Average на машине в районе 12 (8 ядер). Если демонов отключить, то LA будет около 1. Остальные процессы (которые не демоны и не сайт) нагрузки почти совсем не делают, памяти свободной тоже много.



Вопрос: насколько реально эти демоны мешают отдаче сайта веб-сервером? Насколько они его тормозят (и тормозят ли)? По идее, процессы с nice=10 не должны мешать процессам с nice=0. Но есть ощущение, что все же машина перегружена при этом, сайт работает медленнее, чем мог бы.



Можете прокомментировать?
  • Вопрос задан
  • 2993 просмотра
Решения вопроса 1
DmitryKoterov
@DmitryKoterov Автор вопроса
В общем, вынесли таки сайт на отдельную машину. И вы знаете, он сильно ускорился. Оказалось, что сайт сам по себе, когда вокруг нет других процессов, делает LA всего-то в районе 0.8.

Так что ответ на вопрос, могут ли в Linux процессы с nice=10 влиять на веб-сервер с nice=0, когда есть много свободной памяти, диск не загружен, всего процессов на машине — около 400, а CPU idle — около 40% — однозначно ДА, могут.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@Lampus
Дабы понять как влияет nice на работу того или иного процесса в Linux-е, надо понимать как работает планировщик процессов. nice влияет только на так называемый статический приоритет процесса. Проблема тут в том, что в Linux-е используется динамическое планирование процессов. То бишь для каждого процесса выделяемый квант времени считается индивидуально. В экстремальных случаях процессы можно разделить на два типа: ограниченные скоростью процессора и ограниченные скоростью ввода-вывода. В зависимости от того, к какой группе планировщик отнёс процесс, ему выдаётся тот или иной квант времени. Если процесс мало чего считает, а больше находится в ожидании ввода-вывода, то он считается интерактивным и ему даётся меньший квант времени, но больший приоритет. Если процесс активно использует процессор, но в ожидании почти не стоит, то он считается ограниченным производительностью процессора, посему ему даётся более низкий приоритет, но большой квант времени. Таким образом параметр nice лишь двигает влево-вправо тот приоритет, который насчитал планировщик (точнее сказать, что результирующий приоритет задачи это функция статического и динамического приоритетов). Очень хорошо работа планировщика расписана у Роберта Лава в книге «Разработка ядра Linux», но в старых редакциях описана работа уже не актуального для современных ядер планировщика. Если действительно интересно, то попробуйте посмотреть вот этот документ: www.ibm.com/developerworks/ru/library/l-cfs/index.html
Ответ написан
GearHead
@GearHead
Fullstack разработчик и предприниматель
что у вас с оператвой? её с запасом хватает? у меня как-то раз были проблемы с производительностью веб-фронтэндов с nice=-15 из-за того, что демоны, запущенные не как демоны (+ в STAT) периодически в самые активные моменты отъедали значительную часть памяти и заставляли фронтенды свопиться.
Ответ написан
maxout
@maxout
Демоны ваши нагрузку дают на процессор или на диск, из-за чего при их работе LA растёт? Выводы тут видимо очевидны будут, если нагрузка на проц, то демоны на php влиять не должны, а если на диск, то они тормозят весь сервер независимо от найса.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы