首页 技术 正文
技术 2022年11月9日
0 收藏 969 点赞 2,519 浏览 1237 个字

前面我们学习了很多JVM相关的理论知识,那么本节将重点讲述的是工具的使用,正所谓:工欲善其事,必先利其器。因此,本节介绍常用的性能监控工具,用于性能监控和问题排查。

一、系统性能监控

系统性能工具用于确定系统运行的整体状态,基本定位问题所在。

Linux

– uptime

JVM学习十二:JVM之性能监控工具

• 系统时间

• 运行时间

n 例子中为7分钟

• 连接数

n 每一个终端算一个连接

• 1,5,15分钟内的系统平均负载

n 运行队列中的平均进程数

– Top

JVM学习十二:JVM之性能监控工具

• 第一行同uptime

• 第三行到第五行是CPU和内存的使用情况

• 图中下面的列表是每个进程使用CPU的情况

• 可以知道哪个程序占CPU最多

– vmstat

• 可以统计系统的CPU,内存,swap,io等情况

JVM学习十二:JVM之性能监控工具

• 例子中的参数1为采样频率,4为采样次数

• 本例子说明CPU占用率很高,上下文切换频繁,说明系统有线程正在频繁切换

– pidstat

• 细致观察进程

• 需要安装

n sudo apt-get install sysstat

• 监控CPU

• 监控IO

• 监控内存

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

Windows

– 任务管理器

JVM学习十二:JVM之性能监控工具

– Perfmon

Windows自带多功能性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

– pslist

n 命令行工具

n 可用于自动化数据收集

n 显示java程序的运行情况

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

二、JAVA自带工具

JVM学习十二:JVM之性能监控工具   JVM学习十二:JVM之性能监控工具

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

JVM学习十二:JVM之性能监控工具   JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

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

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

jmap–生成Java应用程序的堆快照和对象的统计信息–jmap -histo 2972 >c:\s.txtJVM学习十二:JVM之性能监控工具

Dump堆jmap -dump:format=b,file=c:\heap.hprof 2972JVM学习十二:JVM之性能监控工具JVM学习十二:JVM之性能监控工具

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

jstack 120 >>C:\a.txtJVM学习十二:JVM之性能监控工具JConsole–图形化监控工具–可以查看Java应用程序的运行概况,监控堆信息、永久区使用情况、类加载情况等 JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

Visual VM–Visual VM是一个功能强大的多合一故障诊断和性能监控的可视化工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

性能监控:找到占用CPU时间最长的方法JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

三、实战分析

运行一程序ThreadBlockMain,期望输出Hello,World ,结果在程序运行后,程序卡死,没有预期输出。 JVM学习十二:JVM之性能监控工具JVM学习十二:JVM之性能监控工具

Java程序HoldCPUMain运行后,发现占用CPU很高,希望能找到原因。

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

死锁JVM学习十二:JVM之性能监控工具

如何从jstack的输出中找出死锁 JVM学习十二:JVM之性能监控工具

JVM学习十二:JVM之性能监控工具

输出最后的总结 JVM学习十二:JVM之性能监控工具

参考文献:

葛一鸣《深入JVM内核》视频学习

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,489
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,904
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,737
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,490
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,128
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,291