总结
这些消息通常意味着系统正在经历磁盘或者内存拥塞,并且进程缺乏可用资源。
这些消息用作警告,某些内容可能未以最佳方式运行。
它们不一定表示存在严重问题,当系统恢复时,任何被阻止的进程最终都应该继续进行。
如果可能,我们可以尝试在问题期间捕获以下命令的输出:
# 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 消息会记录到 /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
这些信息是什么?
它们的影响是什么?
欢迎来到之路教程(on itroad-com)
解决方案
此消息旨在使进程处于“D”状态 120 秒。
在这个例子中,kjournald 等待 journal_commit_transaction() 完成超过 120 秒,很可能是由于某些进程的大量 I/O,因为日志提交是一个原子函数。
一般来说,如果消息没有如此频繁地记录在 /var/log/messages 中,这可以被忽略。
这只是由于某些原因导致进程卡住的信息,这可能是由于大量 I/O、存储/网络断开/延迟等原因造成的。
因此,我们在发现此消息后首先需要做的是检查是否经常记录此消息,然后是当时是否存在网络/存储问题。
日期:2020-09-17 00:14:01 来源:oir作者:oir