线上功能出现卡顿如何排查?
线上功能出现卡顿如何排查?
1、首先通过查看微服务上的日志,通过查看代码段之间的耗时进行定位
2、拿线上卡顿功能的相关sql去生产环境跑一下,是否是慢sql,是否需要进行sql优化
3、排查哪里产生的大量对象。
出现卡顿,可能是JVM触发了GC,那就是有大量对象生成,如何排查?
3.1、在生产环境通过 jmap -dump pid 生成dump文件放到jvisualvm查看
3.2、直接通过 jmap -histo pid 查看堆内存中对象的大小
如果通过3步骤查看的对象太靠后,甚至于找不到:
3.4、通过jstack pid | grep -A 10 thread pid的方式来定位出现问题的线程栈的10行代码;
3.5、也可以通过jvisualvm的抽样器中的cpu/内存来查看,哪个对象或者哪个方法占用的cpu时间比较多(因为生成对象多,说明占用的cpu也会对应变多)