性能监控工具
1.系统性能监控-确定系统运行的整体状态,基本定位问题所在
2.Java自带的工具-查看Java程序运行细节,进一步定位问题
3.实战分析-案例问题
系统性能监控- linux
uptime
系统时间、运行时间,例子中为7分钟
连接数--每一个终端算一个连接
1,5,15分钟内的系统平均负载--运行队列中的平均进程数
top
vmstat
可以统计系统的CPU,内存,swap,io等情况
CPU占用率很高,上下文切换频繁,说明系统有线程正在频繁切换
pidstat
细致观察进程
需要安装
sudo apt-get install sysstat
监控CPU
监控IO
监控内存
系统性能监控 - windows
Perfmon-Windows自带多功能性能监控工具
Process Explorer
如何找到系统内最消耗CPU的线程--pslist
命令行工具、可用于自动化数据收集、显示java程序的运行情况
Java自带的工具
jps
列出java进程,类似于ps命令
参数-q可以指定jps只输出进程ID ,不输出类的短名称
参数-m可以用于输出传递给Java进程(主函数)的参数
参数-l可以用于输出主函数的完整路径
参数-v可以显示传递给JVM的参数
jinfo
可以用来查看正在运行的Java应用程序的扩展参数,甚至支持在运行时,修改部分参数
-flag <name>:打印指定JVM的参数值
-flag [+|-]<name>:设置指定JVM参数的布尔值
-flag <name>=<value>:设置指定JVM参数的值
jmap
生成Java应用程序的堆快照和对象的统计信息
jmap -histo 2972 >c:s.txt
Dump堆
jmap -dump:format=b,file=c:heap.hprof 2972
jstack
打印线程dump
-l 打印锁信息
-m 打印java和native的帧信息
-F 强制dump,当jstack没有响应时使用
JConsole
图形化监控工具
可以查看Java应用程序的运行概况,监控堆信息、永久区使用情况、类加载情况等
Visual VM
Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具
性能监控:找到占用CPU时间最长的方法
分析堆Dump
观察Java线程打印
死锁
问题:Jstack和jmap 会引起stop-the-world吗?
希望大家能多实践的,可以参考以上的方式实践是否会引起stop-the-world
有问题大家可以评论或者直接联系我