DmitryKoterov
@DmitryKoterov

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

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

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

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

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



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



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



Можете прокомментировать?
  • Вопрос задан
  • 2992 просмотра
Решения вопроса 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 влиять не должны, а если на диск, то они тормозят весь сервер независимо от найса.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Ведисофт Екатеринбург
от 25 000 ₽
YCLIENTS Москва
от 200 000 до 350 000 ₽
от 300 000 до 500 000 ₽
23 апр. 2024, в 11:46
3000 руб./за проект
23 апр. 2024, в 11:38
20000 руб./за проект