問題
ときどき情報 メッセージは /var/log/messages に記録されます など:
Apr 19 03:33:22 host kernel: INFO: task kjournald:2046 blocked for more than 120 seconds. Apr 19 03:33:22 host kernel: "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message. Apr 19 03:33:22 host kernel: kjournald D ffff810001004420 0 2046 49 2476 2044 (L-TLB) Apr 19 03:33:22 host kernel: ffff81013ce9fdd0 0000000000000046 0000000000000100 0000000000000000 Apr 19 03:33:22 host kernel: 0000000000000000 000000000000000a ffff81013c7d0820 ffffffff80309b60 Apr 19 03:33:22 host kernel: 001b51e0f255644a 0000000000000a88 ffff81013c7d0a08 0000000000000000 Apr 19 03:33:22 host kernel: Call Trace: Apr 19 03:33:22 host kernel: [] :jbd:journal_commit_transaction+0x16d/0x1066 Apr 19 03:33:22 host kernel: [] autoremove_wake_function+0x0/0x2e Apr 19 03:33:22 host kernel: [] try_to_del_timer_sync+0x7f/0x88 Apr 19 03:33:22 host kernel: [] :jbd:kjournald+0xc1/0x213 Apr 19 03:33:22 host kernel: [] autoremove_wake_function+0x0/0x2e Apr 19 03:33:22 host kernel: [] keventd_create_kthread+0x0/0xc4 Apr 19 03:33:23 host kernel: [] :jbd:kjournald+0x0/0x213 Apr 19 03:33:24 host kernel: [] keventd_create_kthread+0x0/0xc4 Apr 19 03:33:24 host kernel: [] kthread+0xfe/0x132 Apr 19 03:33:24 host kernel: [] child_rip+0xa/0x11 Apr 19 03:33:24 host kernel: [] keventd_create_kthread+0x0/0xc4 Apr 19 03:33:24 host kernel: [] kthread+0x0/0x132 Apr 19 03:33:24 host kernel: [] child_rip+0x0/0x11
これらのメッセージとその影響は何ですか?
解決策
このメッセージは、プロセスが 120 秒間「D」状態であることを示しています。この例では、kjournald は、journal_commit_transaction() の終了を 120 秒以上待っていました。これは、ジャーナル コミットがアトミック関数であるため、一部のプロセスによる大量の I/O が原因であると考えられます。
一般的に言えば、メッセージが /var/log/messages にそれほど頻繁に記録されない場合、これは無視できます。これは、大量の I/O、ストレージ/ネットワークの切断/遅延などが原因で発生する可能性がある、何らかの理由でプロセスがスタックしたことを示す単なる情報です。
したがって、このメッセージを見つけた後、最初に行う必要があるのは、これが頻繁にログに記録されているかどうか、次にネットワーク/ストレージに問題があったかどうかを確認することです。
結論
これらのメッセージは通常、システムでディスクまたはメモリの輻輳が発生しており、プロセスで利用可能なリソースが不足していることを意味します。これらのメッセージは、何かが最適に動作していない可能性があるという警告として機能します。これらは必ずしも重大な問題を示しているわけではなく、ブロックされたプロセスは、システムが回復したときに最終的に続行する必要があります。可能であれば、問題が発生している間に以下のコマンドの出力をキャプチャしてみてください:
# top -n 5 -b > /tmp/top.out # vmstat 1 50 > /tmp/vm.out # iostat -x 2 10 > /tmp/io.out # ps aux > /tmp/ps.out # ps auxH > /tmp/psh.out # sar -A > /tmp/sar.out # free > /tmp/free.out # lsof > /tmp/lsof.out
これらの出力は、システム ハングの問題や、「タスクが 120 秒以上ブロックされました」という INFO メッセージの背後にある理由を診断する際に役立ちます。