开发者社区> 问答> 正文

[@项籍][¥20]我的应用在生产环境下经常会出现Tomcat导致CPU异常飙高的问题,最后导致应用出现502,请问如何诊断?

我的应用在生产环境下经常会出现Tomcat导致CPU异常飙高的问题,最后导致应用出现502,请问如何诊断?

展开
收起
安吉驾校短信1 2018-10-30 18:42:49 2170 0
1 条回答
写回答
取消 提交回答
  • 多年互联网开发经验,从事业务开发、平台开发、架构设计、云计算、APM等领域。目前专注于供应链方向的解决方案治理和服务交易域
    • CPU飙高一般的原因是JIT、FGC或者走到死循环的代码逻辑中
    • 502的错误码一般都是后端服务无响应
    • 常见的做法一般是先jstcak线程,随后通过top -H 获取java进程占用cpu最多的线程号,然后匹配问题线程即可定义最耗时的那段逻辑
    • 但是部分场景是老不及jstack现场就丢失了,这个时候可以通过agent探针定期采集发现问题,或者通过线程池满的事件去触发jstack(借助中间件)
    • 如果还是发现不了问题可以再看看是否触发了JIT,从code cache的涨幅或者开启jvm启动参数记录JIT详情去定位
    2019-07-17 23:11:18
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Tomcat 的云原生演进 立即下载
RDS SQL Server CPU高使用率性能优化 立即下载
Android应用-启动速度和内存优化实践 立即下载