1.概要
- 系统性能监控
- 确定系统运行的整体状态,基本定位问题所在
- Java自带的工具
- 查看Java程序运行细节,进一步定位问题
- 实战分析
- 案例问题
2.系统性能监控
-
uptime
uptime.png
- 系统时间
- 运行时间
- 例子中为7分钟
- 连接数
- 每一个终端算一个连接数
- 1,5,15分钟内的系统平均负载
- 运行队列中的平均进程数
-
top
top.png
-
vmstat
- 可以统计系统的CPU,内存,swap,io等情况
vmstat.png
- CPU占用率很高,上下文切换频繁,说明系统有线程正在频繁切换
-
pidstat
- 细致观察进程
- 需要安装
- sudo apt-get install sysstat
- 监控CPU
- 监控IO
- 监控内存
pidstat.png
-
ctrl + alt + del (windows)
任务管理器.png
-
Perfmon
- Windows自带多功能性能监控工具
Perfmon.png
-
Process Explorer
-
pslist
- 命令行工具
- 可用与自动化数据收集
- 显示Java程序的运行情况
3.Java自带的工具
-
jps
- 列出java进程,类似于ps命令
- 参数-q可以指定jps只输出进程ID,不输出类的短名称
- 参数-m可以用于输出传递给Java进程(主函数)的参数
- 参数-l可以用于输出主函数的完善路径
- 参数-v可以显示传递给JVM的参数
jps.png
-
jinfo
- 可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
- -flag<name> : 打印指定JVM的参数值
- -flag [+|-] <name>: 设置指定JVM参数的布尔值
- -flag <name> = <value>:设置指定JVM参数的值
- jinfo -flag MaxTenuringThreshold 16132
- jinfo -flag PrintGCDetails 16132
- jinfo -flag +PrintGCDetails 16132
- jinfo -flag PrintGCDetails 16132
jinfo.png
-
jmap
- 生成Java应用程序的堆快照和对象的统计信息
- jmap -histo 2972 >c:\s.txt
jmap.png
-
Dump堆
- jmap -dump:format=b,file=c:\heap.hprof 16132
-
jstack
- 打印线程dump
- -l 打印锁信息
- -m 打印java和native的帧信息
- -F强制dump,当jstack没有响应时使用
-
JConsole
- 图形化监控工具
- 可以查看Java应用程序的运行情况,监控堆信息、永久区使用情况、类加载情况等
-
Visual VM
- Visual VM是一个功能强大的多台——故障诊断和性能监控的可视化工具
4.实战分析
- 运行程序ThreadBlockMain,期望输出Hello,World,结果在程序运行后,程序卡死,没有预期输出。
- Java程序HoldCPUMain运行后,发现占用CPU很高,希望能找到原因。
- 死锁
网友评论