jvm 之 国际酒店 6月25日上线内存溢出原因

625OMSIhotel上线成功后执行了一个批处理,SOA报警提示某一台IHOTEL机器调用OMS失败率大于阀值,登录这个机器后发现这台机器CPU使用率处于80%以上,调用OMS有的时候超过5秒。tomcat日志显示一直在执行fullGC.

tomcat报错:

 

后联系OPS重启这台机器上的tomcat,系统运行正常。

 

 

错误原因分析:

使用MAT分析java_pid20367.hprof文件

 

pool-8-thread-2这个线程产生了占用了1.6GB的内存。造成下面的错误:

 

 

 

 

这个线程在执行的操作是分页查询OMS,上面的日志显示在SOA调用OMS的时候,由于outOfMemerysoaclient抛出error异常,捕获后没有往外面抛出,因此此线程一直在执行,占用大量的内存【如果此异常抛出到最外层,此线程会终止,线程下面的堆内存也会被GC收回】。因此JVM大部分时间一直在执行FullGC操作,其他线程运行缓慢。最终只能重启tomcat

 

 

 
 
 
posted @ 2015-08-29 11:20  积淀  阅读(187)  评论(0编辑  收藏  举报