Високе завантаження сервера - [jbd2 / md1-8] з використанням 99,99% введення


12

У мене був останній тиждень сплеск навантаження. Зазвичай це відбувається один-два рази на день. Мені вдалося встановити за допомогою iotop, що [jbd2 / md1-8] використовує 99,99% введення. Під час великих навантажень немає великого трафіку на сервер.

Специфікації сервера:

  • AMD Opteron 8 core
  • 16 Гб оперативної пам’яті
  • 2x2.000 GB 7.200 RPM HDD програмного забезпечення 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]

1
en.wikipedia.org/wiki/Journaling_block_device & linux.die.net/man/4/md вказують, що це програмне забезпечення, пов'язане з RAID.
mbrownnyc

Дякуємо за Ваш відповідь. Після деякого копання я виявив, що це стосується програмного забезпечення RAID. Чи знаєте ви якесь рішення? Дивна річ, що вона почала відбуватися лише тиждень тому, після майже 3-х місяців без проблем.
Олексій

Як ви визначили, що показник IO становить 99,99%? Ви використовували iostat? Чи можете ви трохи запустити (скажімо iostat 5) трохи і поділитися результатом?
slm

Я ввімкнув ведення журналу для iotop і переглянув журнал на проміжок часу, коли відбулося навантаження. Тепер навантаження низька, тому немає сенсу запускати її зараз, але я зроблю це наступного разу, коли це станеться. Дякуємо за Ваш відповідь.
Олексій

1
Я щойно стикався з цим точним питанням. Яким було ваше остаточне рішення?
Satanicpuppy

Відповіді:


18

Це насправді не відповідь, оскільки немає достатнього контексту, щоб дати точну причину, але це опис того, як мені вдалося відстежити це, коли воно трапилося зі мною.

Я помітив, що я 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побачив, що це відбувається щосекунди:

# cat /sys/kernel/debug/tracing/trace_pipe
...
jbd2/md0-8-2520  [004] .... 658660.216492: jbd2_commit_flushing: dev 9,0 transaction 32856413 sync 0
jbd2/md0-8-2520  [001] .... 658661.334900: jbd2_commit_flushing: dev 9,0 transaction 32856414 sync 0
jbd2/md0-8-2520  [001] .... 658661.394113: jbd2_commit_flushing: dev 9,0 transaction 32856415 sync 0

Це виглядало так, як це пов’язано з sync(2)/ fsync(2)/ msync(2), тому я шукав певний спосіб пов’язати це з процесом і виявив це:

# find /sys/kernel/debug/tracing/events/ | grep sync.*enable
...
/sys/kernel/debug/tracing/events/ext4/ext4_sync_file_enter/enable
...

Коли я це ввімкнув, я побачив такий вихід:

# cat /sys/kernel/debug/tracing/trace_pipe
...
      nzbget-17367 [002] .... 658693.222288: ext4_sync_file_enter: dev 9,0 ino 301924373 parent 301924357 datasync 1 
  jbd2/md0-8-2520  [001] .... 658693.284080: jbd2_commit_flushing: dev 9,0 transaction 32856465 sync 0
      nzbget-17367 [000] .... 658693.334267: ext4_sync_file_enter: dev 9,0 ino 301924357 parent 301924353 datasync 1 
  jbd2/md0-8-2520  [002] .... 658693.334275: jbd2_commit_flushing: dev 9,0 transaction 32856466 sync 0
      nzbget-17367 [001] .... 658694.369514: ext4_sync_file_enter: dev 9,0 ino 301924367 parent 301924357 datasync 1 
  jbd2/md0-8-2520  [002] .... 658694.414861: jbd2_commit_flushing: dev 9,0 transaction 32856467 sync 0
      nzbget-17367 [001] .... 658694.470872: ext4_sync_file_enter: dev 9,0 ino 301924357 parent 301924353 datasync 1 
  jbd2/md0-8-2520  [002] .... 658694.470880: jbd2_commit_flushing: dev 9,0 transaction 32856468 sync 0

Це дало мені ім'я процесу / id - і, зробивши ще кілька налагоджень цього процесу ( nzbget), я виявив, що це робить fsync(2)щосекунди. Після того, як я змінив його конфігурацію ( FlushQueue=noя недокументований, я вважаю, знайшов її в джерелі), щоб зупинити це робити за секунду, fsync(2)проблема пішла.

Моя версія ядра 4.4.6-gentoo:. Я думаю, що make oldconfigв якийсь момент у налаштуваннях ядра було налаштовано деякі параметри, які я ввімкнув (або вручну або за допомогою ), щоб отримати /sys/kernel/debugці події - тому, якщо у вас цього немає, можливо, просто подивіться по Інтернету для отримання додаткової інформації про включення це.


Приємного спати. Це дуже корисно.
jdhildeb

Дуже дякую за деталізацію всього процесу!
astrojuanlu

1

Здається, це стосується оновлення журналу. Скільки дисків складається з програмного забезпечення RAID. Чи можете ви показати мені команду, яку використовували для її створення.

Чи можете ви також вставити на вихід dumpe2fs. Спочатку визначте фізичний пристрій, де ви бачите навантаження. Використовуйте df, щоб знати це. Тоді,

dumpe2fs /dev/sdaX > /tmp/dump

У вашому випадку це може бути / dev / md0.

Також запустіть це.

iostat -xdk 1 25

На час високого випуску ІО.

Я не знаю cloudlinux, але чи доступний інструмент blktrace під ним.


Привіт Сохам, дякую за вашу відповідь. У масиві є 2 диски. Що стосується dumpe2fs, чи можете ви, будь ласка, дати мені повну команду, яку ви хочете запустити? Дякуємо за допомогу.
Олексій

Олексій відредагував відповідь.
Soham Chakraborty

Ніколи не забудьте, що це не насправді будь-яка навіть середина налаштування перфорамності з дисків - "повільно, як робоча станція" більше описує це.
TomTom
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.