发布时间: 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
² 进程处于无法中断的睡眠状态 (D state)
² 在系统变为无响应前,/var/log/messages 中记录了以下信息:
INFO: task 
    
    
    
      : 
     
       blocked for more than 120 seconds 
       
      
  ² 是什么原因导致产生上面的信息?在对这个问题进行故障排除时需要什么信息?
# sysctl kernel.hung_task_timeout_secs=0 
  kernel.hung_task_panic = 0 
  2.6.18-194 中增加了一个 Detect Hung Task 内核线程 (khungtaskd),它的功能是检测到那些已处于 D-state ( Uninterruptible Sleep (UN) ) 状态超过了一定时间(默认是 120 秒)的任务,并把以下类型的信息记录到系统日志文件中(例如,/var/log/messages)。"INFO: task 
    
    
    
      : 
     
       blocked for more than 120 seconds" 
       
      
  khungtaskd 内核线程会监控进程的状态,并检查是否有进程已处于不可中断的状态超过了 "kernel.hung_task_timeout_secs" sysctl 参数所设定的时间长度(这个系统参数的默认值是 120 秒)。如果存在这样的进程,它会在日志中记录这个情况,并记录下阻塞进程的调用回溯信息。为了防止产生大量的日志数据,在默认情况下,这个监控进程只会报告检测到的最先发生的 10 个挂起任务,以后将不再报告。因此,即使不再产生相关的信息,仍然有可能存在阻塞的任务。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:   
  [
    
    
    
      ] thread_return+0x62/0xfe  
      
  [
    
    
    
      ] :jbd:log_wait_commit+0xa3/0xf5  
      
  [
    
    
    
      ] autoremove_wake_function+0x0/0x2e  
      
  [
    
    
    
      ] :jbd:journal_stop+0x1cf/0x1ff  
      
  [
    
    
    
      ] __writeback_single_inode+0x1e9/0x328  
      
  [
    
    
    
      ] do_readv_writev+0x26e/0x291  
      
  [
    
    
    
      ] sync_inode+0x24/0x33  
      
  [
    
    
    
      ] :ext3:ext3_sync_file+0xc9/0xdc  
      
  [
    
    
    
      ] do_fsync+0x52/0xa4  
      
  [
    
    
    
      ] __do_fsync+0x23/0x36  
      
  [
    
    
    
      ] 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 
  运行以下命令以提供相关的数据:
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) 
   
 
 
      
 
      
 
      
 
      