У меня есть сервер, на котором одновременно выполняется несколько сотен процессов, большинство из которых простаивают, это своего рода веб-сканер, который по разным причинам спит между запросами.
В результате моя средняя загрузка обычно выглядит примерно так: 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, что означает, что ваша система ожидает операций ввода-вывода. Итак, вам нужно проверить настройки вашего диска / файловой системы и при необходимости оптимизировать.
По сути, высокая нагрузка не обязательно означает плохую - это может просто означать, что ваш сервер и службы начинают использоваться. Или это означало бы, что завтра может случиться что-то плохое. Однако следует лучше понимать поведение системы, а не просто говорить, что все работает нормально. Так что собирайте больше данных, отслеживайте, читайте, исследуйте и наблюдайте в течение нескольких дней, и тогда это может помочь вам получить больше информации.
Надеюсь это поможет.