1、系统性能监控
确定系统运行的整体状态,基本定位问题所在
1.1 uptime

系统时间
运行时间
例子中为7分钟
连接数
每一个终端算一个连接
1,5,15分钟内的系统平均负载
运行队列中的平均进程数
1.2 top
同uptime

1.3 vmstat

1.4 pidstat
细致观察进程
需要安装
sudo apt-get install sysstat
监控CPU
监控IO
监控内存

2、Java自带的工具
查看Java程序运行细节,进一步定位问题

2.1 jps
列出java进程,类似于ps命令 参数-q可以指定jps只输出进程ID ,不输出类的短名称 参数-m可以用于输出传递给Java进程(主函数)的参数 参数-l可以用于输出主函数的完整路径 参数-v可以显示传递给JVM的参数

2.2 jinfo
可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数 -flag <name>:打印指定JVM的参数值 -flag [+|-]<name>:设置指定JVM参数的布尔值 -flag <name>=<value>:设置指定JVM参数的值

2.3 jmap

2.4 Dump堆

2.5 jstack
打印线程dump -l 打印锁信息 -m 打印java和native的帧信息 -F 强制dump,当jstack没有响应时使用

2.6 JConsole

2.7 Visual VM

3、实战分析
3.1 示例1
运行一程序ThreadBlockMain,期望输出Hello,World ,结果在程序运行后,程序卡死,没有预期输出。

3.1 示例2
Java程序HoldCPUMain运行后,发现占用CPU很高,希望能找到原因。
步骤1:

步骤2:

步骤3:

3.3 示例:死锁

步骤1:

步骤2:











