背景:ubuntu服务器,跑着 Sonar 服务 以及一个Tomcat 跑另一个Web项目。
不定期无预兆出现这种症状(有时一两个星期,有时几个月一次): 执行ps -ef 终端被挂起,ps -e 则可以;执行reboot无法完成,必须要机房硬重启;但是跑在上面的Sonar还可以正常跑,只是速度变慢,以往的情况看来这张状态一段时间后Sonar服务也会无法访问,且无法杀死Sonar web进程 ,kill -9 都不行。
检查系统状态发现cpu load 很高,Sonar进程cpu利用率正常,反而另外的 java web项目的Tomcat cpu利用率很高(如下 top所示)。
这应该是sonar runner的问题,有部署过sonar的各位不知道有没有碰到类似的问题。或者请指点一二这类问题该如何定位原因?
系统状态如下:
$ uname -a Linux ubuntu 3.13.0-24-generic #47-Ubuntu SMP Fri May 2 23:30:00 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
$ top top - 18:00:37 up 55 days, 11:37, 2 users, load average: 324.15, 324.10, 323.91 Tasks: 2492 total, 1 running, 2491 sleeping, 0 stopped, 0 zombie %Cpu(s): 7.2 us, 1.4 sy, 0.0 ni, 91.1 id, 0.1 wa, 0.2 hi, 0.0 si, 0.0 st KiB Mem: 65928256 total, 51204552 used, 14723704 free, 909204 buffers KiB Swap: 62499836 total, 1054296 used, 61445540 free. 32148216 cached Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 30747 root 20 0 98.089g 5.990g 297728 S 189.9 9.5 47743:52 java 47219 ubuntu 20 0 20.676g 574904 16936 S 10.3 0.9 0:39.03 java 47347 ubuntu 20 0 26992 3756 1160 R 3.9 0.0 0:00.65 top 5994 root 20 0 12.651g 328872 14120 S 1.0 0.5 131:01.88 java 3646 root 20 0 0 0 0 S 0.6 0.0 11:39.52 kworker/8:2 6176 root 20 0 22.429g 3.427g 14748 S 0.6 5.5 704:48.58 java
ps -ef 被挂起,ctrl+c 也无法退出:
$ ps -ef |grep tomcat ^C ^C ^C ^C ^C
可以执行ps -e,发现有大量的lsof进程:
$ ps -e |grep lsof |wc -l 600