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,没有起到优化效果。
因线上产品不能随便重启,问题定位阶段使用的是同规格的云主机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,没有起到优化效果。
相关文章推荐
- 启动Tomcat出现Using CATALINA_BASE
- Apache与Tomcat联系及区别
- maven tomcat1.7环境下构建javaweb 项目
- Tomcat7插件+overlays不能热部署调试如何解
- nginx + tomcat 配置,静态资源直接使用nginx
- 配置tomcat
- java.lang.UnsatisfiedLinkError: D:\Tomcat\apache-tomcat-7.0.37\bin\tcnative-1.dll: Can't load AMD 6
- cmd正常启动tomcat,而 从eclipse启动出现 404
- tomcat Server Locations 不可用 两种解决方式
- TOMCAT开放远程调试端口
- java.lang.IllegalArgumentException: Document base D:\apache-tomcat-7.0.61\webapps\xxxx does no
- tomcat和java历史版本下载
- 安卓tomcat服务器端项目导入第三方JAR包找不到
- android 从tomcat读取文件出错:connect failed: ECONNREFUSED
- [Tomcat]如何清理缓存
- javax.imageio.IIOException: Can't create output stream!tomcat 验证码,图片(原理)
- tomcat历史版本下载
- tomcat8.0.32的BUG
- Linux环境下在Tomcat上部署JavaWeb工程
- myeclipse maven 项目部署发现maven管理的jar没有进入tomcat下面的lib中