1.如果IOwait占用比较高,使用pidstat -x -d 查看是哪个线程占用较高的IO,然后通过jstack查看线程的堆栈信息,查看线程业务在干什么操作
2.如果是CUP比较高,top -Hp pid查看进程中占用cpu最高的线程,使用 jstack pid查看堆栈,分析代码在干什么
3.如果在压测过程中TPS波动不稳定,呈逐渐下降后再次上升,再次下降的波动,考虑fullGC频繁,可以通过jmap -heap pid 查看jvm使用情况以及分配,怎么判断GC频繁呢,可以使用jstack -gcutil pid 多多使用几组,观察老年代使用率,因为通常新生代GC频繁,把回收不掉的对象给了老年代,老年代又快速被占满了
如果是jvm内存分配不合理,那么调整就行,如果想找出不可回收对象的来源,这个暂且不知,等后续我知道怎么排查再写上