问题总结 CPU 使用率高
异常现象
- 应用响应慢,接口响应超时
排查步骤
- 查看服务器CPU高的应用:top
- 找到CPU使用率高的进程pid
- 查询CPU使用率高的线程tid : top -Hp pid
- 打印线程 tid 的十六进制:printf “%x{tid}”
- 查询堆栈日志定位具体问题:jstack pid | grep “tid”
常见原因
- 慢SQL:动态SQL拼接实际使用时参数没有拼接造成全表扫描
堆栈信息
- 自动生成配置1
/tomcat/bin/catalina.sh JAVA_OPTS 中增加如下配置
-XX:+HeapDumpOnOutOfMemoryError 内存溢出时自动导出内存快照
-XX:HeapDumpPath=E:/dumps/ 导出内存快照时保存的路径
- 手动生成配置
jmap -dump:format=b,file=/dumps/jmap.hprof 21060
jmap -heap pid 堆内存分配配置信息
- 日志分析工具2