您的位置:首页 > 运维架构 > Tomcat

Tomcat重启负载高问题定位

2016-04-13 15:23 387 查看
某产品每次重启Tomcat都会收到CPU告警信息,重启阶段CPU使用率可以达到80%~90%以上,会持续一段时间回降(具体时间没有考察)。应产品方要求,对该问题进行分析定位。
因线上产品不能随便重启,问题定位阶段使用的是同规格的云主机QA19,该环境上有和线上一致的应用程序,且重启tomcat时,也会有CPU飙高的现象。
负载高的原因:
重启的时候对资源使用情况进行监控,并通过top -H + jstack 分析消耗CPU过高的线程堆栈信息。

通过监控重启时的资源使用情况,在qa19这台机器上,重启一次,CPU飙高的持续时间约为50-60s左右。
通过top -H + jstack 定位消耗CPU过高的线程,

尝试的解决方法:
helloJava的两篇文章中给出了两种配置方法:见:http://hellojava.info/?p=195 以及 http://hellojava.info/?p=201
尝试加上-XX:+TieredCompilation,期望借助多层编译来缓解这个问题:

在tomcat jvm参数中增加该配置项,资源监控CPU飙高持续时间降低到45s左右,比原来少了10s+,略有效果

尝试加一个-XX:CICompilerCount参数来试试,这个值默认是2,也就是说2个c2的编译线程来进行编译:

因为QA19和线上tomcat应用服务器都是2个核的云主机,所以默认值2应该是最优值,尝试把该值改成1 or 4,没有起到优化效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: