我們能幫你什么?
發(fā)布時間: 2019年12月17日
https://access.redhat.com/solutions/31453
https://access.redhat.com/zh_CN/solutions/695633
Solution 已驗證 - 已更新 2018年三月20日07:56 -
中文 (中國)
² Red Hat Enterprise Linux (RHEL) 5.5 (kernel-2.6.18-194) 或更高版本
² Red Hat Enterprise Linux (RHEL) 6
² Red Hat Enterprise Linux (RHEL) 7
² 進程處于無法中斷的睡眠狀態(tài) (D state)
² 在系統(tǒng)變?yōu)闊o響應前,/var/log/messages 中記錄了以下信息:
INFO: task <process>:<pid> blocked for more than 120 seconds
² 是什么原因?qū)е庐a(chǎn)生上面的信息?在對這個問題進行故障排除時需要什么信息?
# sysctl kernel.hung_task_timeout_secs=0
kernel.hung_task_panic = 0
2.6.18-194
中增加了一個 Detect Hung Task 內(nèi)核線程 (khungtaskd
),它的功能是檢測到那些已處于 D-state ( Uninterruptible Sleep (UN) ) 狀態(tài)超過了一定時間(默認是 120 秒)的任務,并把以下類型的信息記錄到系統(tǒng)日志文件中(例如,/var/log/messages)。"INFO: task <process>:<pid> blocked for more than 120 seconds"
khungtaskd
內(nèi)核線程會監(jiān)控進程的狀態(tài),并檢查是否有進程已處于不可中斷的狀態(tài)超過了 "kernel.hung_task_timeout_secs" sysctl 參數(shù)所設定的時間長度(這個系統(tǒng)參數(shù)的默認值是 120 秒)。如果存在這樣的進程,它會在日志中記錄這個情況,并記錄下阻塞進程的調(diào)用回溯信息。為了防止產(chǎn)生大量的日志數(shù)據(jù),在默認情況下,這個監(jiān)控進程只會報告檢測到的最先發(fā)生的 10 個掛起任務,以后將不再報告。因此,即使不再產(chǎn)生相關(guān)的信息,仍然有可能存在阻塞的任務。INFO: task syslogd:2643 blocked for more than 120 seconds.
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
syslogd D ffff81000237eaa0 0 2643 1 2646 2634
(NOTLB)
ffff8101352c3d88 0000000000000086 ffff8101352c3d98 ffffffff80063ff8
0000000000001000 0000000000000009 ffff81013d2c57e0 ffff810102ac1820
0000340b30708992 0000000000000571 ffff81013d2c59c8 000000010000089f
Call Trace:
[<ffffffff80063ff8>] thread_return+0x62/0xfe
[<ffffffff88036d8a>] :jbd:log_wait_commit+0xa3/0xf5
[<ffffffff800a1ba4>] autoremove_wake_function+0x0/0x2e
[<ffffffff8803178a>] :jbd:journal_stop+0x1cf/0x1ff
[<ffffffff8002ff40>] __writeback_single_inode+0x1e9/0x328
[<ffffffff800e1464>] do_readv_writev+0x26e/0x291
[<ffffffff800f3d9d>] sync_inode+0x24/0x33
[<ffffffff8804c36d>] :ext3:ext3_sync_file+0xc9/0xdc
[<ffffffff8005073a>] do_fsync+0x52/0xa4
[<ffffffff800e1ce9>] __do_fsync+0x23/0x36
[<ffffffff8005e28d>] tracesys+0xd5/0xe0
# uname -a > /tmp/uname.out
# ifconfig > /tmp/ifcongfig.out
# 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
運行以下命令以提供相關(guān)的數(shù)據(jù):
Raw
# tar -cjvf outputs.tar.bz2 /tmp/*.out
# tar -cjvf message.tar.bz2 /var/log/message*
$ grep MYAPP lsof | grep oracle
MYAPP 7096 1062 cwd DIR 0,18 0 558301 /oracle/prd/fs_ne/inst/conc/log
...
$ grep nfs mount
remotehost@:/ on /oracle/prd/fs_ne/inst type nfs (rw,nosuid)