在linux环境下
一.uptime
系统时间,运行时间
连接数:
每一个终端算一个连接
1,5,15分钟内的系统平均负载
运行队列中的平均进程数
二.vmstat
可以统计系统的CPU,内存,swap,io等情况
vmstat 1 4
三.top
cpu内存
每个进程占CPU情况
四.pidstat
监控CPU,IO,内存
-p 指定进程 –u 监控CPU 每秒采样 一共3次 -t 显示线程
TID 线程id CPU哪个核
五.windows
任务管理器:cpu ,io
perfmon
pslist:显示java程序的运行情况
六.java自带工具
1.jps
列出java进程, -q 只输出进程id -m 输出Java进程(主函数)的参数 -l 可以用于输出主函数的完整路径 -v可以显示传递给JVM的参数
2.jinfo
查看java应用程序的扩展参数
-flag <name>:打印指定JVM的参数值
-flag [+|-]<name>:设置指定JVM参数的布尔值
-flag <name>=<value>:设置指定JVM参数的值
jinfo -flag PrintGCDetails 2972
3.jmap
生成java应用程序的堆快照和对象的统计信息
4.jstack
打印线程dump
-l 打印锁信息 -m 打印java和native的帧信息 -F强制dump,当jstack没有响应时候使用
5.JConsole
图形化监控工具
可以查看Java应用程序的运行概况,监控堆信息、永久区使用情况、类加载情况等
6.Visual VM
Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具
七.例子
运行一程序ThreadBlockMain,期望输出Hello,World ,结果在程序运行后,程序卡死,没有预期输出。
1.jps 查看程序进程
2.jstack 输出dump
3.top 查看占用cpu最多的进程id
4.pidstat 查看进程id下线程占用cpu 最多 ,TID线程id转换成16进制 ,nid
5.jstack 进程id 输出信息,查找nid,定位问题