分享一个因为测试服务器内存用完,导致kvm虚拟机莫名奇妙关机,同时ssh无法连接的问题----最终原因是tomcat无法退出

回复 收藏

开始的时候是开发发现数据库连接不上了(数据库跑在测试服务器上的虚拟机work14里),然后准备查原因,

发现远程终端也连不上了,通过内网,和外网都试了,全部连不上,ping内网和外网IP都能ping通,  然后持续了3-5分钟,突然就好了,

然后登陆上去,发现虚拟机停掉了3个,之前开了4个(work11,work12,work13,work14),只有一个work11在跑

然后老大让我去找原因,刚上班几天,之前完全没经验,心里莫名的紧张,然后就去找阿铭老师求助去了

@H~NNQ{UTV4DQ78OB8R3}5.png然后我去查日志,先查了kvm日志,发现有错误,但是信息很少,没有收获

4B17ORA9~HD4Z193E)OTPS.png

然后继续求助

8Y@DUCS@D[{YWFNQRDXICO.png

结果

5~R}Y{G2{T]EK9{7`~}]C(H.png

然后把问题反馈给老大了,但是老大说ssh连不上什么原因,再去查一查.....

之后把虚拟机关掉两个,然后top命令查看内存,发现内存占用率在96%,而且跑了7-8个Java进程在

把这个问题反映给老大,老大说让我查查tomcat为什么会启动多个Java,正常应该是一个啊

之后,老大把Java进程全杀掉了,重新启动了tomcat,这个时候内存占用率在20%

终于找到原因了,不是虚拟机占用的,而是tomcat的问题

然后去查tomcat启动多个Java进程的问题,结果又是毫无头绪

中间把ssh登录不上的原因查到了

R](DF%KK]J7%~0ZIFXGPA]B.png

UW35XB[CO%4IO`F4_U{AH8.png

在/var/log/messages 日志里有一段记录进程信息的,看到sshd前边的两个值,有时候为-17 -1000, 有时候又是 0  0

然后就去查了两个值得含义,原来是类似优先级的一个东西,在内存不足的时候,按照值得大小,来一个一个杀掉,值大的就会先杀掉,在出问题的时候,刚好sshd前的值,变成了0 0 ,所以sshd在内存不足的时候,被杀掉了.

后来又去查tomcat为什么会启动多个Java进程,然后突然发现机器上又多了个Java进程,把这个情况告诉老大

结果老大说,应该不是tomcat自动启动的Java,刚刚他刚好重启了tomcat,应该是之前的tomcat关掉的时候Java进程没有结束

然后试了一下stop tomcat,结果发现,tomcat停掉了,网站不能访问了,但是Java进程还是存在

然后就继续查tomcat为什么不能完全退出

发现了这个帖子:http://tuhaitao.iteye.com/blog/1122935

KIQQOWIM]4]EA[D8@8ZS[K.png

原来是开发的代码问题,按照帖子的说明,试了一下没有退出的进程,果然发现有一些ftp相关的进程没有设置成daemon,所以导致tomcat不能正常退出

问题终于解决了,把链接发给了老大,情况说明了一下,至此我运维生涯里遇到的第一个问题算是解决了

不过老大好像有点不高兴....(ps:老大就是那个开发i_f01.gif)

2017-07-06 17:28 举报
已邀请:

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
可选评分理由: