Tomcat重启负载高问题定位
作者:网络转载 发布时间:[ 2014/1/9 15:17:43 ] 推荐标签:Tomcat 重启 CPU 堆栈
尝试的解决方法:
helloJava的两篇文章中给出了两种配置方法:见:http://hellojava.info/?p=195以及http://hellojava.info/?p=201
尝试加上-XX:+TieredCompilation,期望借助多层编译来缓解这个问题:
在tomcatjvm参数中增加该配置项,资源监控CPU飙高持续时间降低到45s左右,比原来少了10s+,略有效果
尝试加一个-XX:CICompilerCount参数来试试,这个值默认是2,也是说2个c2的编译线程来进行编译:
因为QA19和线上tomcat应用服务器都是2个核的云主机,所以默认值2应该是优值,尝试把该值改成1or4,没有起到优化效果。
存在问题:
对于QA19性能测试环境来说,重启后没有其他请求引入,但是线上环境重启后会不断有请求过来,所以CPU飙高的时间会持续时间更长。
对于性能测试环境,重启之后的进行第一次并发测试,前期负载同样会很高,如下图:
同样,在测试开始后通过top-H+jstack分析堆栈信息,分析得到两个原因:
启动各种各样的线程进行处理请求,如AJP线程、和数据通信的线程、和ActiveMQ通信的线程等,会短时间内耗费一些资源
另外,测试刚启动时,"C2CompilerThread1"该线程耗费资源过多,会一段时间内持续在40%~80%的CPU消耗
测试时,增加-XX:+TieredCompilation该参数,对比资源使用情况如下:
并发50个线程时,增加参数之前
增加参数后
并发100个线程,增加参数前
增加参数后
结论:
可以看出即便有流量引入,-XX:+TieredCompilation该参数也是起到了一定作用,使得飙高的CPU尽快回落。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11