背景:服务收到cpu超过阀值报警通知
问题排查 一:
1.查看服务堆栈信息 【jmap -heap pid】 , 发现服务jvm内存使用99%; 查看服务日志,有oom异常,FULLGClog。判断服务进行fullgc导致cpu飙高。
2.排查定位JVM内存使用情况:
发现大对象,定位对象位置,找到线程--代码位置。 百万数据表全量数据查询查表
问题排查 二:
继上一个问题处理后, 发现CPU仍然报警。
1.排查内存情况:
内存使用正常。
2.排查线程使用情况:
命令生成线程堆栈文件,定位到10个线程在查同一个接口,并且线程运行到相同位置代码。
查看代码是在查表。sql性能不太好准备优化