tomcat cpu占用过高

第一步: 使用top -c 命令查看哪个进程占用cpu

这里看到占用cpu的进程为20067

第二步:使用top -H -p 20067(进程ID) 查看占用cpu的线程

第三步:把列表中的占用高的线程pid转化成16进制

$ printf "%x\n" 26493(线程ID)

第四步:利用jstack 命令搜索线程信息

$ jstack -l 20067(进程ID) > dump.txt

$ vim dump.txt

在vim 中搜索26493(线程ID)的十六进制数字

重点查这么几类情况:
1)wait on monitor entry: 被阻塞的,肯定有问题

2)runnable : 注意IO线程

3)in Object.wait(): 注意非线程池等待

最后注意看runnable的GC任务线程

附加:

Online Java Thread Dump Analyzer - 在线线程日志分析工具

http://spotify.github.io/threaddump-analyzer/#thread-0x00007fae98001800

 

"GC task thread#0 (ParallelGC)" os_prio=0 tid=0x00007f2f2401d800 nid=0x6645 runnable

$ jstat -gcutil 91782 5s

查询Eden和Old是否始终都占满,是否频繁进行YGC,是否频繁FGC

https://blog.csdn.net/zouheliang/article/details/80537571

https://www.jianshu.com/p/f92c190f7dec

https://my.oschina.net/zhangxufeng/blog/1613808

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值