1 线上CPU飙高怎么排查
- 【top】首先用top指令查处哪个进程占用cpu高
- 【top -Hp 进程 ID】 列出对应进程里面的线程占用资源情况
- 【jstack】找到对应线程 ID 后,再打印出对应线程的堆栈信息
2 内存飙高怎么排查
- jstat -gc PID 1000 查看 GC 次数,时间等信息,每隔一秒打印一次。
- jmap -histo PID | head -20 查看堆内存占用空间最大的前 20 个对象类型,可初步查看是哪个对象占用了内存。
jstat 主要用来查看堆中各部分的使用量,包括但不限于:
- -gc GC次数
- -class 类加载计数
- -gccapacity 堆内存统计
- -gcNew 新生代回收
⚠️注意:Linux中可以使用time命令查看进程的耗时情况
# 查看堆内存中的存活对象,并按空间排序
jmap -histo pid | head -n20
# dump堆内存文件
jmap -dump:format=b,file=heap pid