分类: 系统运维
2013-01-18 12:38:55
Solaris 系统时间错误导致cpu资源过度占用问题处理解决
故障现象:
使用top命令查看,发现cpu的idle几乎为0,几个进程占用近100%的cpu资源,如果将这个进程kill,系统马上恢复正常,系统reboot以后,故障现象重现,仍然是那几个进程占用大量cpu资源,top命令查看示例如下:
31 processes: 28 sleeping, 2 running, 1 on cpu
CPU states: 0% idle, 10% user, 94% kernel, 6% iowait, % swap
Memory: 1024M real, 885M free, 4104M swap free
PID USERNAME THR PRI NICE SIZE RES STATE TIME CPU COMMAND
175 root 13 48 0 23M 21M sleep 137.9H 55.85% syslogd
163 root 5 22 0 3776K 1936K run 56.4H 22.49% automountd
299 root 4 12 0 3080K 2184K run 50.8H 20.45% dmispd
1487 root 1 28 0 1936K 1208K cpu 0:00 0.39% top-3.5b8-sun4u
69 root 6 58 0 3576K 2816K sleep 3:50 0.00% picld
160 daemon 4 0 0 2544K 1704K sleep 0:00 0.00% statd
159 root 1 0 0 1936K 1264K sleep 0:00 0.00% lockd
63 root 12 30 0 2240K 1248K sleep 0:00 0.00% syseventd
235 root 1 33 0 1736K 1144K sleep 0:00 0.00% smcboot
253 root 1 42 0 960K 632K sleep 0:00 0.00% htt
236 root 1 43 0 1736K 672K sleep 0:00 0.00% smcboot
247 root 6 48 0 2688K 1968K sleep 0:00 0.00% vold
144 root 1 48 0 2488K 1760K sleep 0:00 0.00% inetd
182 root 1 48 0 1968K 1232K sleep 0:00 0.00% cron
1477 root 1 48 0 336K 240K sleep 0:00 0.00% sh
故障原因:
最初认为系统kenerl补丁级别不够导致很多bug没有修正,但是其他机器的操作系统是一样的级别补丁,所以不可能是这个原因,通过查阅相关信息,最终找到了问题原因,是automountd的一个bug导致系统异常!
故障分析:
由于错误的系统时间,date命令查看显示是Fri Jan 17 13:09:37 LMT 1913,系统时间不可能设置在1913年的,系统时间芯片记载的是从1970年以来到目前的秒数总和!automountd存在一个bug,导致automountd进程异常,通过syslogd不断给系统发送日志信息,cpu整个就在处理系统日志信息了!
解决方案:
处理方法非常简单,直接使用date命令修改系统时间,首先是系统时间恢复正常,再用top命令查看,系统所有进程恢复正常,idle信息也恢复了正常值了!