Я получаю следующий вывод top
:
Cpu(s): 43.8%us, 32.5%sy, 4.8%ni, 2.0%id, 15.6%wa, 0.2%hi, 1.2%si, 0.0%st
Mem: 16331504k total, 15759412k used, 572092k free, 4575980k buffers
Swap: 4194296k total, 260644k used, 3933652k free, 1588044k cached
вывод из iostat -xk 6
показывает следующее:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 360.20 86.20 153.40 1133.60 2054.40 26.61 1.51 6.27 0.77 18.38
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 22.60 198.80 17.40 31.60 265.60 921.60 48.46 0.18 3.70 1.67 8.20
sdc 16.80 218.20 22.20 23.40 261.60 966.40 53.86 0.21 4.56 1.49 6.78
Исходя из вышесказанного, похоже, что-то должно быть перегружено. Но что?
Вопросов
- Если это не жесткий диск или процессор, то что?
- Кажется, как будто 15,6% процессорного времени тратится на ожидание. Что именно это может ждать?
performance
load
user4951
источник
источник
Ответы:
Как пояснение, нагрузка напрямую не связана с процессором. Это одно из самых распространенных заблуждений о нагрузке. Тот факт, что вы упомянули диск, похоже, подтверждает, что вы знаете об этом, но я просто хотел упомянуть об этом, поскольку вижу комментарии, которые указывают на то, что некоторые считают иначе.
Загрузка определяется как количество процессов, ожидающих системных ресурсов. Обычно это процессор, диск или сеть, но на самом деле это может быть что угодно аппаратное.
«Процесс» также не обязательно является полным процессом. Поток определяется как «облегченный процесс», и каждый ожидающий поток увеличивает счетчик нагрузки.
Чтобы выяснить, какие процессы являются проблемой:
Выполнить
top -H
(-H
позволяет показывать потоки)Сочетания клавиш различаются в зависимости от версии.
С более новым верхом (3.3 и позже):
Нажмите, fчтобы вызвать параметры поля.
Используйте клавиши со стрелками для перехода
S = Process Status
и нажмите s.Нажмите, qчтобы вернуться на главную страницу.
Нажмите Shift+, Rчтобы отменить сортировку.
Со старшей версией (до 3.3):
Нажмите Shift+, oчтобы вызвать параметры сортировки.
Затем wотсортировать по статусу процесса.
Затем, Enterчтобы вернуться на главную страницу.
Затем Shift+, Rчтобы изменить сортировку.
Затем в
S
столбце найдите процессы, которые имеютD
илиR
(теперь они должны быть вверху). Это будут процессы, способствующие загрузке системы.Если процесс показывает
D
, что означает «непрерывный сон». Обычно это происходит, когда процесс ожидает ввода-вывода (диск, сеть и т. Д.).Если процесс показывает a
R
, это означает, что он просто выполняет обычные вычисления.Чтобы узнать больше о том, что делают эти процессы:
С более новым верхом (3.3 и позже):
Нажмите, fчтобы вызвать параметры поля.
Используйте клавиши со стрелками для перехода
WCHAN = Sleeping in Function
и нажмите, dчтобы включить его.Затем, qчтобы вернуться на главную страницу.
Со старшей версией (до 3.3):
Нажмите fзатем, yчтобы активировать
WCHAN
поле.Если в вашей системе есть необходимые параметры ядра, и в вашей системе присутствует файл wchan (я забыл, где он находится и как он называется) ,
WCHAN
поле должно показать вам, какую функцию ядра выполняет процесс в данный момент (если поле просто показывает-
или?
на все, у вас нет поддержки).Немного Google здесь, и вы должны быть на своем пути.
Если у вас нет поддержки wchan, вы всегда можете попробовать
strace
процессы, чтобы узнать, что они делают, но это трудный путь.источник
Процессы с коротким сроком службы, такие как компиляция заданий или сбойные процессы в цикле, часто не видны в инструментах мониторинга, таких как
top
или iostat и так далее.В таких случаях Linux Audit Framework поможет
Виновник, цикл неудач, например
Чтобы использовать AuditD / Auditctl:
украдено из журнала все процессы запускаются
источник
top
, то вряд ли они влияют на среднюю нагрузку. Чтобы он способствовал усреднению нагрузки, он должен находиться в состоянии ожидания в течение длительного периода времени. Статистически это означает, что это будет появляться вtop
. Если это не так, то это не значительный вклад.У меня была ситуация, когда монтирование NFS отключалось, и, к сожалению, я допустил ошибку и не использовал опцию мягкого монтирования, поэтому на моем Linux-сервере застопорилось множество процессов, включая мониторинг, lsof и даже сеансы bash ....
После демонтажа сломанных креплений система выглядела перегруженной:
Это выглядело ужасно, но загрузка процессора ниже 15% и нет дискового ввода-вывода. Я получил несколько советов, чтобы пройти через PS, но это не помогло, поскольку казалось, что процессы в основном спят.
Затем
man ps
сохранил мою ночь для сна, и после исследования я обнаружил очень важные флаги STATUS, чтобы посмотреть, как позже выяснилось, что они застряли процессы.Выполнение:
и найдите процессы, которые имеют
D
илиSL
в столбце STAT. Это были процессы зомби, но не идентифицированные как Z-зомби.D - означает в основном активность диска (I / O), но также если вы запускаете
ps -e v
несколько раз, а такжеiostat 3
и не видите активности, это указывает на то, что это зависание ввода-вывода .SL - это означает, что в памяти этого процесса находится страница Locked, поэтому, если вы можете определить, что этот процесс не должен вести себя так, он станет следующим возможным кандидатом, если он останется без изменений на более длительный период.
После расследования я убил одного за другим, и средняя загрузка системы стала нормальной.
источник