Назад | Перейти на главную страницу

Высокая средняя нагрузка, когда мне беспокоиться?

У меня есть сервер, на котором одновременно выполняется несколько сотен процессов, большинство из которых простаивают, это своего рода веб-сканер, который по разным причинам спит между запросами.

В результате моя средняя загрузка обычно выглядит примерно так: 21,64, 27,05, 29,16.

Это очень-очень высоко, правда? Но все идет гладко!

И потребление моего процессора примерно такое (вывод mpstat 60 1):

11:07:06 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
11:08:06 AM  all   34.82    0.00    4.16   10.70    0.00    0.31    0.00    0.00    0.00   50.01
Average:     all   34.82    0.00    4.16   10.70    0.00    0.31    0.00    0.00    0.00   50.01

Итак, поскольку я даже не использую 100% ЦП, я чувствую, что у меня нет причин для беспокойства, или я что-то упускаю? Когда nginx обслуживает запросы, происходит небольшая задержка, но это ожидается, учитывая большое количество запросов в очереди. Но я где-то читал, что средняя загрузка выше 1 является причиной для тревоги, и я, честно говоря, не понимаю, почему это так.

Так что посоветуйте, пожалуйста.

Спасибо

Только волнуйтесь, если это действительно соответствует медленному приложению.

Точнее, средняя загрузка связана с количеством запущенных или ожидающих процессов. Это может быть намного больше, чем 1, и работать нормально. При средней нагрузке 21 на хосте с 24 ядрами ЦП будет простаивать, даже если эти процессы работают на 100%. Совет, что 1 - это много, может исходить от людей, которые не видели больших или занятых хостов.

iowait - это задержка для приложения, но (в современных системах хранения) ЦП фактически свободен для других дел.

Следите за временем отклика вашего приложения. Сопоставьте это с другими данными вашего мониторинга, чтобы увидеть, что на самом деле указывает на то, что дела идут медленно.

А средняя нагрузка выше 1 относится к 1 ядру / потоку. Итак, практическое правило состоит в том, что средняя нагрузка, равная вашим ядрам / потокам, в порядке, больше, скорее всего, приведет к очереди процессов и замедлит работу.

В Айовейт например также учитывается в средней нагрузке, и один процесс, выполняющий тяжелый ввод-вывод, может увеличить среднюю нагрузку до значения более 1 без использования второго ядра / потока.
Хотя этот тяжелый процесс ввода-вывода, вероятно, будет иметь плохое время отклика, второй процесс может очень быстро реагировать на высокую нагрузку. В зависимости от ресурсов, к которым обращается процесс.

Вам следует собрать больше информации, чтобы лучше разобраться. Также в вашем сообщении не хватает деталей, таких как какой сервер, какой дистрибутив Linux, сколько у вас ЦП / ядер? Вы можете выполнить команду mpstat -P ALL для получения информации о процессоре. У тебя достаточно памяти? диск? настройка файловой системы?

Вероятно, вы можете определить, какая операция в nginx вызывает высокую нагрузку, посмотрев на вывод lsof | grep nginx.

Есть ли у вас какие-либо оповещения / мониторинг? Таким образом, вы можете получать уведомления, когда видите высокую тревогу. Вы регистрируете нагрузку на сервер (через sar)? Можете ли вы определить какие-либо тенденции в течение дня / недели? Какие процессы запущены?

Я также вижу числа iowait около 10 в вашем выводе mpstat, что означает, что ваша система ожидает операций ввода-вывода. Итак, вам нужно проверить настройки вашего диска / файловой системы и при необходимости оптимизировать.

По сути, высокая нагрузка не обязательно означает плохую - это может просто означать, что ваш сервер и службы начинают использоваться. Или это означало бы, что завтра может случиться что-то плохое. Однако следует лучше понимать поведение системы, а не просто говорить, что все работает нормально. Так что собирайте больше данных, отслеживайте, читайте, исследуйте и наблюдайте в течение нескольких дней, и тогда это может помочь вам получить больше информации.

Надеюсь это поможет.