背景
公司内部基于 spring boot 开发自有组件并顺利上线,为 api 同学的开发带来了极大的便利,许多重要业务迁移到该组件, 这种情况下我们对组件的性能做一次深度压测。并对一些逻辑进行了合理优化,其中发现一些比较有意思的点。
测试环境
测试机型为 linux 4.19.84-300.el7.x86_64t 系统,配置为 4 核 cup, 8 g 内存,模拟每秒 3700 吞吐量,请求大小为 500 B。
性能问题
cpu 使用率 350%
定位问题
查看什么线程在占用 cpu ?
top -Hp 9458
发现一个线程名称为 java 线程,看一下具体是那个线程。
转换tid, 通过16进制转换 printf %x 9473,nid 号为2501
jstack 看一下具体线程在干什么 jstack 9458 > /tmp/9458
发现是 G1 的 gc 线程 在搞鬼