此博客为炼数成金JVM教程第七课
目录
- 系统性能监控
- 确定系统运行的整体状态,基本定位问题所在
- Java自带的工具
- 查看Java程序运行细节,进一步定位问题
- 实战分析
- 案例问题
Linux 性能监控
uptime
系统时间
运行时间:例子中为7分钟
连接数: 每一个终端算一个进程
1,5,15分钟内的系统平均负载:运行队列中的平均进程数
top
第一行输出与uptime相同
接着输出CPU和内存的统计结果
最后输出单个进程的CPU占用情况
这个命令可以知道那个程序占CPU最多
这里有一点需要注意,如果SWAP有大量的被使用,说明系统的实际内存比较欠缺,用到了交换空间,这会引起大量的IO读写,对系统造成比较大的影响。
vmstat
vmstat 1 4 每一秒采集一次,共采集四次
可以统计系统的CPU,内存,swap,io等情况
CPU占用率(us)很高,上下文切换(cs)频繁,说明系统有线程正在频繁切换
pidstat
细致观察进程
监控CPU
监控IO
监控内存
-p 执行进程id,-u 查看CPU, 1 3 每秒采样一次,一共采用三次
-t 显示线程的使用情况
Tid 为线程ID, %cpu 为CPU使用率,CPU为在哪个核
检查IO,我们以磁盘IO为例
可见,有一个进程的IO特别多,所以我们要去检查这个线程的情况。
Windows 性能监控
任务管理器
Perfmon
windows 自带多功能性能监控工具
Process Explorer
pslist
windows 命令行参数
可用于自动化收集数据
显示java程序的运行情况
Java自带的工具
jps
列出java进程,类似于ps命令
参数 -q 可以指定jsp只输出进程ID,不输出类的短名称
参数 -m可以输出传递给java进程(主函数)的参数
参数 -l 可以用于输出主函数的完整路径
参数 -v 可以显示传递给JVM的参数