码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-08-29 12:23:57      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

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

 

造成outOfMemery的原因,分析代码后发现是我自己写的代码bug,造成了死循环调用OMS,我做出检讨。

 
 

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

标签:

原文地址:http://www.cnblogs.com/200911/p/4768784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!