程序cpu占用高优化"/>
java程序cpu占用高优化
背景
一台机器上部署了三个canal实例. CPU占用很高, 但是数据量不是很多. 虽然这里是针对canal的例子, 但是排除问题的方法也可以通用在其他应用上.
排查
找到具体的进程
从下面的图片中看, 这三个Java程序(都是Canal的实例)占用的CPU比较高。top命令查看这三个实例, 每个实例都稳定地使用了大约100%的CPU资源. 这个现象不正常, 所以开始了下面的排查之路。
image.png
一、GC问题导致?
1. 使用JDK自带的jstat 工具分析GC情况
jstat -gcutil 29204 2000 200 , 解释一下, 29204就是上面截图里的pid. 2000代表每隔2000毫秒检查一次, 200代表检查两百次, 200也可以省略, 表示不限次数.
通过这个命令, 发现gc也不是很频繁, 内存情况看起来还好, 不会因为这个导致CPU占用如此高.
$ jstat -gcutil 29204 2000 200
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 13.12 50.21 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 51.53 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 53.68 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 54.10 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 55.92 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 57.35 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 57.62 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 58.22 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 59.71 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 61.76 16.11 98.33 97.98 3333 51.509 2 0.098 51.607
0.00 13.12 62.
更多推荐
java程序cpu占用高优化
发布评论