1. ✅系统负载高如何排查
#jps
jps -lvm
根据业务名字(jar包名字过滤,目录名字,产品名字)
#jstack 进程 线程
进程:一个命令,软件,服务运行起来后,占用资源,内存
线程:处理用户请求,Threads
ps aux
top -Hp pid 显示线程信息
pstree -p 显示进程与线程pid
ps -efL
#获取java进程pid
jps -l
#jstack进程中线程的状态,每种状态数量
jstack 1230 | grep -i thread.state | awk '{print $2}' | sort | uniq -c
8 RUNNABLE
2 TIMED_WAITING
15 WAITING
#jmap 导出jvm信息 保存jvm文件(类似蓝屏).(大礼包)
交给第三方工具分析文件
jmap -heap pid
#导出jvm内存数据到文件中
jmap -dump:format=b,file=/root/java.hprof javapid
format=b 表示二进制格式
file=java.hprof 是输出的文件名
#通过ma/mat工具分析 内存分析工具
windows安装jdk,然后运行mat工具
- jps 看java进程信息
- jstack 看指定java进程的线程信息,一般我们关注state部分,blocked
- jmap 看jvm信息,导出jvm数据(jvm内存镜像)
- mat工具(桌面)分析
线程状态 |
描述 |
NEW |
线程已创建但尚未启动(未调用start() 方法) |
RUNNABLE |
线程正在运行或准备运行,等待CPU调度 |
BLOCKED |
线程被阻塞,等待获取监视器锁(例如,进入同步块或方法) |
WAITING |
线程无限期等待,直到被其他线程显示唤醒(例如,调用object.wait() ) |
TIMED_WAITING |
线程在指定时间内等待(例如,调用Thread.sleep() 或Object.wait(timeout) ) |
TERMINATED |
线程已执行完毕,终止状态 |
2. ✅系统负载高完成排查流程
- 先排查与解决故障
- 后续
-
- 根因分析
-
-
- 故障现象
- 故障排查流程
- 故障如何解决
- 预防故障
-