隔一段时间应用就会挂掉(进程在,但停止响应,也无log输出),必须重启tomcat

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了隔一段时间应用就会挂掉(进程在,但停止响应,也无log输出),必须重启tomcat相关的知识,希望对你有一定的参考价值。

此处是转载的  是给自己做的备注

 

问题:隔一段时间应用就会挂掉(进程在,但停止响应,也无log输出),必须重启tomcat

原因查找
由于tomcat自身log中并无错误产生,磁盘空间足够,读写也正常,排除其他原因后怀疑是jvm崩溃导致,于是查gc日志:
技术分享
从上图可以看出每次full GC是老年代内存占用量相当小,远没有达到它的最大值,持久代也一样,而且每次GC过后,占用量基本没有变化,也就是说,每一次full GC都是在做无用功,白白浪费掉了一大批性能。从内存占用率方面看不是内存分配不够,应该是程序代码方面的问题,于是找开发协助。后来在相关开发人员的协助下发现代码中有主动调用System.gc()的地方,网上搜了下,发现即便是官网也不推荐代码中出现System.gc(),也不敢保证使用它对应用程序性能和稳定性方面的影响。其实从jvm配置层面也可以禁用掉主动的gc()方法调用,加上参数“-XX:+DisableExplicitGC”就可以了,于是加上此参数后重启tomcat,过一段时间查看gc log,OK,原因找到,问题解决!后台也给开发那边建议不要在代码中主动调用System.gc()方法,交由jvm本身自动处理gc。

解决方法:jvm配置加参数“-XX:+DisableExplicitGC”;代码中禁止调用System.gc();

以上是关于隔一段时间应用就会挂掉(进程在,但停止响应,也无log输出),必须重启tomcat的主要内容,如果未能解决你的问题,请参考以下文章

排查HBase内存泄漏导致RegionServer挂掉问题

(转帖)为什么vfork的子进程里用return,整个程序会挂掉,而且exit()不会?

IIS每隔一段时间就无法进行访问,重启服务也不行,必须重启服务器才可以,请问是啥情况?如何解决?

在Excel中如何用vba实现:每隔一段时间自动将工作簿保存到以当时时间为文件名的文件中

Windows server2003 下IIS问题:Windows server2003 下IIS每隔一段时间就不能运行了,必须得重启服务器

服务器重启,停止后再启动