dapat memuat tinggi menyebabkan server hang dan error "diblokir selama lebih dari 120 detik"?

17

Saat ini menjalankan beberapa VM dan server 'baremetal'. Java berjalan dengan tinggi - lebih dari 400% + di beberapa waktu. Secara acak server hang dengan kesalahan di konsol "java - diblokir selama lebih dari 120 detik" - kjournald, dll.

Saya tidak bisa mendapatkan output dmesg karena untuk beberapa alasan kesalahan ini hanya menulis ke konsol, yang saya tidak memiliki akses karena ini di-host dari jarak jauh. karena itu saya tidak dapat menyalin jejak lengkap.

Saya mengubah lingkungan ini - bahkan server fisik dan itu masih terjadi.

Saya mengubah hung_task_timeout_secs menjadi 0 seandainya ini adalah false positive seperti pada http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/Technical_Notes/deployment.html .

Juga, irqbalance tidak diinstal, mungkin itu akan membantu?

ini adalah Ubuntu 10.04 64bit - masalah yang sama dengan server 2.6.38-15 terbaru dan 2.6.36.

dapatkah cpu atau masalah memori / tidak ada swap yang tersisa menyebabkan masalah ini?

ini pesan konsolnya:

[58Z?Z1.5?Z840] INFUI task java:21547 blocked for more than 120 seconds.
[58Z?Z1.5?Z986] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?Z06Z] INFUI task kjournald:190 blocked for more than 120 seconds.
[58Z841.5?Z336] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?Z600] INFUI task flush-202:0:709 blocked for more than 120 seconds.
[58Z841.5?Z90?] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z841.5?3413] INFUI task java:21547 blocked for more than 120 seconds.
[58Z841.5?368Z] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z961.5?ZZ36] INFUI task kjournald:60 blocked for more than 120 seconds.
[58Z961.5?Z6Z5] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
[58Z961.5?31ZZ] INFUI task flush-202:0:709 blocked for more than 120 seconds.
[58Z961.5?3393] "echo 0 > /proc/sgs/kernel/hung_task_timeout_secs" disables this
message.
Tee
sumber

Jawaban:

15

Ya bisa.

Apa artinya ini cukup eksplisit: kernel tidak dapat menjadwalkan tugas selama 120 detik. Ini menunjukkan sumber daya kelaparan, sering di sekitar akses disk.

irqbalancemungkin membantu, tetapi itu tidak terdengar jelas. Bisakah Anda memberi kami informasi seputar pesan ini dmesg, khususnya jejak tumpukan yang mengikutinya?

Apalagi ini bukan false positive. Ini tidak mengatakan bahwa tugas digantung selamanya , dan pernyataan itu benar sekali. Itu tidak berarti itu masalah bagi Anda, dan Anda dapat memutuskan untuk mengabaikannya jika Anda tidak melihat adanya dampak pengguna.

Ini tidak dapat disebabkan oleh:

  • masalah CPU (atau lebih tepatnya, itu akan menjadi kegagalan perangkat keras yang mustahil),
  • masalah memori (sangat mungkin kegagalan perangkat keras, tetapi tidak akan terjadi beberapa kali; bukan karena kurangnya RAM sebagai suatu proses oom-killed),
  • kurangnya swap ( oom-killerlagi).

Untuk perluasan, Anda mungkin bisa menyalahkan ini pada kurangnya memori dalam arti bahwa merampas sistem caching data Anda dalam RAM akan menyebabkan lebih banyak I / O. Tapi itu tidak semudah "kehabisan memori".

Pierre Carrier
sumber
Tidak ada yang direkam ke / var / log / dmesg jadi saya hanya menempelkan apa yang ditampilkan Konsol .. saat ini muncul sistem ini 100% hang.
Tee
Pesan ini berasal dari kernel, akan muncul di dmesg(jika cukup baru-baru ini dicatat) karena perintah ini mencetak buffer ring logging kernel. Semoga syslogsetup Anda juga akan login di suatu tempat /var/log, tetapi saya tidak tahu di mana.
Pierre Carrier
Pesan TIDAK akan muncul /var/log/dmesg, tetapi mungkin muncul ketika Anda menjalankan dmesgperintah. File ini dibuat selama proses boot dan umumnya hanya menangkap pesan-pesan kernel boot-time (yang jika tidak akhirnya akan keluar dari buffer ring kernel. Anda juga dapat menginstal / mengaktifkan sysstatdan melihat pemanfaatan sumber daya seperti yang dilaporkan di sana. Saya menduga disk I / O / iowait, kemungkinan terkait dengan swapping (sysstat akan membantu dalam mengidentifikasi ini)
Dr. Edward Morbius
@ Dr.EdwardMorbius Jadi bagaimana kita memperbaikinya? Saya mengalami masalah besar terkait hal ini dengan server Zimbra kami yang berjalan sangat baik di lingkungan produksi hingga saat ini.
Lopsided
@ Lopsided: Maaf atas keterlambatan, saya tidak sering di sini. Secara singkat: Anda harus membuat profil proses Java Anda dan mencari tahu mengapa itu menggantung. Pengumpulan sampah adalah salah satu bidang yang saya punya masalah (dan keberhasilan) dalam penyempurnaan. Cari ergodymics pengumpulan sampah JVM dan lihat oracle.com/technetwork/java/javase/gc-tuning-6-140523.html Saya menemukan bahwa peningkatan timbunan sampah sangat membantu.
Dr. Edward Morbius
6
sudo sysctl -w vm.dirty_ratio=10
sudo sysctl -w vm.dirty_background_ratio=5

Kemudian lakukan perubahan dengan:

sudo sysctl -p

dipecahkan untuk saya ....

Nick
sumber
6
Anda harus menjelaskan apa yang masing-masing pengaturan lakukan.
kasperd
6
Ini memperbaiki masalah serupa yang saya alami di lingkungan buruh pelabuhan. Saya menemukan penjelasan di sini: blackmoreops.com/2014/09/22/… . "Secara default, Linux menggunakan hingga 40% dari memori yang tersedia untuk caching sistem file. Setelah tanda ini tercapai, sistem file akan mem-flush semua data yang beredar ke disk yang menyebabkan semua IO berikut berjalan secara sinkron. Untuk membilas data ini ke disk, ini ada batas waktu 120 detik secara default. Dalam kasus di sini, subsistem IO tidak cukup cepat untuk menyiram data dalam ... "
Peter M
2

Saya baru-baru ini melewati kesalahan ini di salah satu cluster Produksi kami:

11 Nov 14:56:41 xxx kernel: INFO: task xfsalloc / 3: 2393 diblokir selama lebih dari 120 detik.

11 Nov 14:56:41 Kernel Xxxx: Tidak ternoda 2.6.32-504.8.1.el6.x86_64 # 1

11 Nov 14:56:41 xxx: "echo 0> / proc / sys / kernel / hung_task_timeout_secs" menonaktifkan pesan ini.

..

Pada verifikasi lebih lanjut dari log sar Ditemukan menunggu IO meningkat pada waktu yang sama.

Dan setelah memeriksa Perangkat Keras (Disk Fisik) melihat kesalahan sedang dan Kesalahan SCSI lainnya telah login pada Disk Fisik, yang pada gilirannya memblokir IO, karena kurangnya sumber daya untuk mengalokasikan.

11/11/15 19:52:40: dihentikan pRdm 607b8000 flags = 0 TimeOutC = 0 RetryC = 0 Permintaan c1173100 Balas 60e06040 iocStatus 0048 coba lagiC 0 devId: 3 devFlags = f1482005 iocLogInfo: 31140000

11/11/15 19:52:40: DM_ProcessDevWaitQueue: Tugas mgmt dalam proses devId = x 11/11/15 19:52:40: DM_ProcessDevWaitQueue: Tugas mgmt dalam proses devId = x

Jadi ini karena kesalahan perangkat keras, di cluster kami.

Jadi akan lebih baik, jika Anda bisa memeriksa file inti dan juga jika utilitas ipmi ada, periksa ipmiutil / ipmitool sel elist perintah untuk memeriksa masalah ini.

Salam, VT

Varun Thomas
sumber
0

Anda bisa pergi ke antarmuka pemantauan penyedia cloud Anda dan memeriksa apakah Anda tidak melebihi IOps maksimum yang ditentukan untuk penyimpanan Anda, itu akan menjelaskan mengapa perlu waktu lama untuk membersihkan data cache.
IOps maksimum tersedia di halaman atribut penyimpanan Anda.

Emmanuel
sumber