更多 选择语言
< 返回主菜单
您当前所在位置: 首页 > 支持下载 > 自助服务 > 常见问题 > 服务器

linux系统运行中产生D进程

发布时间: 2019年12月17日

问题描述

: blockedformorethan120seconds"." style="margin: 30px 0px 0px; padding: 0px; color: rgb(51, 51, 51); font-size: 24px; font-weight: normal; line-height: 1.25; border-bottom-color: rgb(204, 204, 204); font-family: Arial, sans-serif;">系统变为无响应状态并产生以下信息 "INFO: task : blocked for more than 120 seconds".

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 
      
    

²  是什么原因导致产生上面的信息???在对这个问题进行故障排除时需要什么信息??

决议

  • 这些信息通常意味着,,,,系统存在磁盘或内存阻塞问题,,,,进程无法获得可用的资源。。
  • 请参阅 "" 中 CAUTIONS 一段的内容。。。。
  • 这些信息通常用来提示用户注意与操作优化有关的问题。。这些信息并不一定代表出现了严重的问题,,,,而被阻塞的进程通常会在系统恢复正常状态时被处理。。。。
  • 如果需要进一步的故障诊断,,,,根据  的内容产生一个 vmcore,,,,并和红帽的技术支持一起合作分析 vmcore。。。
  • 如果处于挂起状态的任务是第三方的应用程序,,,,请同时请求相关应用程序厂商的支持。。
  • 如果您已了解到这些任务挂起信息是因为特定错误造成的,,,,您也可以禁止产生这些信息。。但是,,,我们并不建议这样做,,,,这也不可能防止任务挂起问题的出现。。。如果您需要禁止产生这些信息,,,请进行以下操作:
# sysctl kernel.hung_task_timeout_secs=0
  • 如果任务挂起导致系统崩溃,,而且您已知道了造成这个问题的原因,,,则可以通过把以下内容添加到 /etc/sysctl.conf 中来避免系统崩溃。。。。在进行改变后,,,,需要运行 'sysctl -p' 以使改变生效。。

kernel.hung_task_panic = 0

根源

  • Red Hat Enterprise Linux 5.5 使用的内核版本 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
# iosestat -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

运行以下命令以提供相关的数据:

# tar -cjvf outputs.tar.bz2 /tmp/*.out
# tar -cjvf message.tar.bz2 /var/log/message*
  • 检查这个问题是否是因为使用远程文件系统(如 NFS)造成处理延迟。。。。例如,,如果有大量 NFS 服务器请求,,,,就可能会造成这个问题。。。。


$ 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)

我们能帮你什么????







×
联系我们
ERP、、企业软件购买热线
400-018-7700
政务云产品销售热线
400-607-6657
企业云产品销售热线
400-699-1556 转 5
集团客户投诉热线
400-691-8711
智能终端产品客服热线
400-658-6111
云海产品客服热线
400-860-0011
站点地图