У меня был всплеск нагрузки за последнюю неделю. Это обычно происходит один или два раза в день. Мне удалось определить из iotop, что [jbd2 / md1-8] использует 99,99% ввода-вывода. В периоды высокой нагрузки отсутствует высокий трафик на сервер.
Спецификации сервера:
- AMD Opteron 8 ядро
- 16 ГБ ОЗУ
- 2x2.000 ГБ 7.200 об / мин HDD Software Raid 1
- Cloudlinux + Cpanel
- Mysql правильно настроен
Помимо шипов, нагрузка обычно составляет около 0,80 максимум.
Я искал вокруг, но не могу найти, что именно [jbd2 / md1-8] делает точно. У кого-нибудь была эта проблема или кто-нибудь знает возможное решение?
Спасибо.
ОБНОВИТЬ:
TIME TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND
16:05:36 399 be/3 root 0.00 B/s 38.76 K/s 0.00 % 99.99 % [jbd2/md1-8]
iostat
? Можете ли вы немного рассказать об этом (скажемiostat 5
) и поделиться результатами?Ответы:
На самом деле это не ответ, так как не хватает контекста, чтобы точно указать причину, но это описание того, как мне удалось отследить это, когда это случилось со мной.
Я заметил, что мои
jbd2/md0-8
продолжают появляться наверхуiotop
. Я посмотрел,/sys/kernel/debug/tracing/events/jbd2
чтобы увидеть, какие есть варианты, чтобы определить, чтоjbd2
делает.ПРИМЕЧАНИЕ-1: Чтобы увидеть выходные данные для событий трассировки отладки
cat /sys/kernel/debug/tracing/trace_pipe
- у меня это работало в терминале при включении / выключении трассировки.ПРИМЕЧАНИЕ-2: Для включения событий для отслеживания используйте, например
echo 1 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
. Отключитьecho 0 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
.Я начал с включения
/sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable
- но в выводе для него не было ничего интересного. Я попытался отследить несколько других событий, и когда я включил,/sys/kernel/debug/tracing/events/jbd2/jbd2_commit_flushing/enable
я увидел, что это происходит каждую секунду:Это выглядело так, как будто это было связано с
sync(2)
/fsync(2)
/msync(2)
, поэтому я искал способ связать это с процессом и нашел это:Когда я включил его, я увидел следующий вывод:
Это дало мне имя / идентификатор процесса - и после некоторой дополнительной отладки этого процесса (
nzbget
) я обнаружил, что это происходитfsync(2)
каждую секунду. После того, как я изменил его конфиг (FlushQueue=no
недокументированный, я думаю, нашел его в исходном коде), чтобы он не делал этого в секунду,fsync(2)
проблема ушла.Моя версия ядра.
4.4.6-gentoo
Я думаю, что были некоторые опции, которые я включил (вручную или с помощьюmake oldconfig
) в какой-то момент в конфигурации ядра, чтобы получить/sys/kernel/debug
с этими событиями - поэтому, если у вас его нет, возможно, просто посмотрите в Интернете для получения дополнительной информации о включении Это.источник
Кажется, это связано с обновлением журнала. Из скольких дисков состоит программный RAID. Можете ли вы показать мне команду, использованную для его создания.
Вы также можете вставить вывод dumpe2fs. Сначала определите физическое устройство, на котором вы видите нагрузку. Используйте DF, чтобы узнать это. Потом,
В вашем случае это может быть / dev / md0.
Кроме того, запустите это.
Во время проблемы с высоким IO.
Я не знаю cloudlinux, но есть ли в нем инструмент blktrace.
источник