Beban server tinggi - [jbd2 / md1-8] menggunakan 99,99% IO

12

Saya telah mengalami lonjakan beban selama seminggu terakhir. Ini biasanya terjadi sekali atau dua kali sehari. Saya sudah berhasil mengidentifikasi dari iotop bahwa [jbd2 / md1-8] menggunakan 99,99% IO. Selama waktu pemuatan tinggi, tidak ada lalu lintas tinggi ke server.

Spesifikasi server adalah:

  • AMD Opteron 8 core
  • RAM 16 GB
  • 2x2.000 GB 7.200 RPM HDD Raid Software 1
  • Cloudlinux + Cpanel
  • Mysql disetel dengan benar

Terlepas dari paku, beban biasanya sekitar 0,80 paling banyak.

Saya telah mencari-cari tetapi tidak dapat menemukan apa [jbd2 / md1-8] yang sebenarnya. Adakah yang punya masalah ini atau ada yang tahu solusi yang mungkin?

Terima kasih.

MEMPERBARUI:

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]
Alex
sumber
1
en.wikipedia.org/wiki/Journaling_block_device & linux.die.net/man/4/md menunjukkan bahwa ini terkait dengan perangkat lunak RAID.
mbrownnyc
Terima kasih untuk balasan Anda. Setelah melakukan penggalian, saya menemukan bahwa itu terkait dengan RAID perangkat lunak. Apakah Anda tahu solusi untuk itu? Hal aneh yang mulai terjadi hanya seminggu yang lalu, setelah hampir 3 bulan tidak ada masalah.
Alex
Bagaimana Anda menentukan IO adalah 99,99%? Apakah Anda menggunakan iostat? Bisakah Anda menjalankan sedikit (katakanlah iostat 5) sebentar dan membagikan hasilnya?
slm
Saya mengaktifkan logging untuk iotop dan melihat log untuk interval saat beban terjadi. Sekarang bebannya rendah sehingga tidak ada gunanya untuk menjalankannya sekarang, tapi saya akan melakukannya saat itu terjadi. Terima kasih untuk balasan Anda.
Alex
1
Saya baru saja mengalami masalah ini. Apa solusi akhirnya Anda?
Satanicpuppy

Jawaban:

18

Ini sebenarnya bukan jawaban karena tidak ada konteks yang cukup untuk memberikan penyebab yang tepat, tetapi ini adalah deskripsi bagaimana saya berhasil melacak ini ketika itu terjadi pada saya.

Saya perhatikan saya jbd2/md0-8terus muncul di atas iotop. Saya melihat /sys/kernel/debug/tracing/events/jbd2ke dalam untuk melihat opsi apa yang ada untuk menentukan apa yang jbd2sedang dilakukan.

CATATAN-1: Untuk melihat output untuk acara pelacakan penelusuran cat /sys/kernel/debug/tracing/trace_pipe- Saya menjalankan terminal ini saat mengaktifkan / menonaktifkan jejak.

CATATAN-2: Untuk mengaktifkan acara untuk melacak penggunaan misalnya echo 1 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable. Untuk menonaktifkan echo 0 > /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable.

Saya mulai dengan mengaktifkan /sys/kernel/debug/tracing/events/jbd2/jbd2_run_stats/enable- tetapi tidak ada yang tampak sangat menarik dalam output untuk itu. Saya mencoba beberapa peristiwa lain untuk melacak dan ketika saya mengaktifkan /sys/kernel/debug/tracing/events/jbd2/jbd2_commit_flushing/enablesaya melihat itu terjadi setiap detik:

# 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

Ini sepertinya terkait dengan sync(2)/ fsync(2)/ msync(2), jadi saya mencari beberapa cara untuk menautkan ini ke proses dan menemukan ini:

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

Ketika saya mengaktifkannya saya melihat output berikut:

# 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

Ini memberi saya nama proses / id - dan setelah melakukan lebih banyak debugging dari proses ini ( nzbget) saya menemukan itu melakukan fsync(2)setiap detik. Setelah saya mengubah konfigurasi ( FlushQueue=no, menurut saya tidak berdokumen, menemukannya dalam sumber) untuk menghentikannya melakukan hal ini per detik fsync(2)masalahnya hilang.

Versi kernel saya adalah. 4.4.6-gentooSaya pikir ada beberapa opsi yang saya aktifkan (baik secara manual atau dengan make oldconfig) di beberapa titik di konfigurasi kernel untuk mendapatkan /sys/kernel/debugdengan peristiwa ini - jadi jika Anda tidak memilikinya mungkin hanya melihat-lihat internet untuk informasi lebih lanjut tentang mengaktifkan Itu.

Iwan Aucamp
sumber
Sleuthing yang bagus. Ini sangat membantu.
jdhildeb
Terima kasih banyak untuk merinci semua proses!
astrojuanlu
1

Ini tampaknya menjadi hal yang terkait pembaruan jurnal. Jumlah disk perangkat lunak yang dibuat. Bisakah Anda menunjukkan kepada saya perintah yang digunakan untuk membuatnya.

Bisakah Anda juga menempelkan pada keluaran dumpe2fs. Pertama, kenali perangkat fisik tempat Anda melihat memuat. Gunakan df untuk mengetahui hal ini. Kemudian,

dumpe2fs /dev/sdaX > /tmp/dump

Untuk kasus Anda, mungkin / dev / md0.

Juga, jalankan ini.

iostat -xdk 1 25

Pada saat masalah IO tinggi.

Saya tidak tahu cloudlinux tetapi apakah alat blktrace tersedia di bawahnya.

Soham Chakraborty
sumber
Hai Soham, terima kasih atas balasan Anda. Ada 2 disk dalam array. Adapun dumpe2fs bisa tolong beri saya perintah penuh Anda ingin saya jalankan? Terima kasih telah membantu.
Alex
Alex, edit jawabannya.
Soham Chakraborty
Jangan pernah lupa bahwa ini bukan benar-benar pengaturan pertengahan bahkan dari cakram - "lambat sebagai workstation" tidak lebih menjelaskannya.
TomTom