JProfiler11使用教程之JVM调优问题小结

安装JProfiler

jprofiler_windows-x64_11_0_2

链接: https://pan.baidu.com/s/1EWxW5VT100D1v_HVvKYGqQ?pwd=qif5 
提取码: qif5 

JProfiler11使用教程之JVM调优问题小结_第1张图片

JProfiler11使用教程之JVM调优问题小结_第2张图片

JProfiler11使用教程之JVM调优问题小结_第3张图片

JProfiler11使用教程之JVM调优问题小结_第4张图片

JProfiler11破解

JProfiler11使用教程之JVM调优问题小结_第5张图片

然后打开破解机器 KeyGen.exe

链接: https://pan.baidu.com/s/13MX6iLFtcmerdGovYjOh4g?pwd=cx7e 
提取码: cx7e 

JProfiler11使用教程之JVM调优问题小结_第6张图片

JProfiler11使用教程之JVM调优问题小结_第7张图片

JProfiler11使用教程之JVM调优问题小结_第8张图片

JProfiler11使用教程之JVM调优问题小结_第9张图片

JProfiler11使用教程之JVM调优问题小结_第10张图片

JProfiler11使用教程之JVM调优问题小结_第11张图片

JProfiler11使用教程之JVM调优问题小结_第12张图片

配置本地监控

我们启动一个本地项目weblogic,Jboss,tomcat或者springboot都行,我们就拿主流的springboot来说(其实内嵌的就是tomcat)

JProfiler11使用教程之JVM调优问题小结_第13张图片

然后我们打开jprofiler,监控指定的程序

JProfiler11使用教程之JVM调优问题小结_第14张图片

JProfiler11使用教程之JVM调优问题小结_第15张图片

JProfiler11使用教程之JVM调优问题小结_第16张图片

配置远程监控

我的服务器是x86的uname -m
在需要监听的目标服务器上安装jprofiler_linux_11_0_2.tar.gz

链接: https://pan.baidu.com/s/1O03jqyBdsPZHt3zpoMzwAg?pwd=n297 
提取码: n297 

我是放在/opt 下,解压tar zxfv jprofiler_linux_11_0_2.tar.gz,重命名为:jprofiler11
配置/etc/profile文件,添加如下内容

export INSTALL4J_JAVA_HOME=/usr/local/src/java/java-se-8u41-ri/jre  #jdk安装目录下
export LD_LIBRARY_PATH=/opt/jprofiler11/bin/linux-x86  #jprofile的安装目录下

找java安装目录whereis java

/usr/local/src/java/java-se-8u41-ri/ 就是安装目录,我们进去看看有没有jre目录

修改完后,使环境变量生效
source /etc/profile

需要监听的项目必须在服务器上运行中否则JProfiler 启动会失败的

JProfiler11使用教程之JVM调优问题小结_第17张图片

启动自己的项目然后检测是否启动

启动成功后那么就可以启动服务器上的JProfiler服务了 /opt/jprofiler11/bin/jpenable

JProfiler11使用教程之JVM调优问题小结_第18张图片

选择[1]然后会显示客户端可以连接的端口号,用于客户端连接服务器的

配置window下的jprofile11

JProfiler11使用教程之JVM调优问题小结_第19张图片

JProfiler11使用教程之JVM调优问题小结_第20张图片

JProfiler11使用教程之JVM调优问题小结_第21张图片

JProfiler11使用教程之JVM调优问题小结_第22张图片

JProfiler11使用教程之JVM调优问题小结_第23张图片

JProfiler11使用教程之JVM调优问题小结_第24张图片

JProfiler11使用教程之JVM调优问题小结_第25张图片

JProfiler11使用教程之JVM调优问题小结_第26张图片

JProfiler11使用教程之JVM调优问题小结_第27张图片

JProfiler11使用教程之JVM调优问题小结_第28张图片

JProfiler11使用教程之JVM调优问题小结_第29张图片

JProfiler11使用教程之JVM调优问题小结_第30张图片

jProfiler客户端介绍

仪表盘

JProfiler11使用教程之JVM调优问题小结_第31张图片

这个不用多说,看说明就知道啥东西

查看对象增长情况

JProfiler11使用教程之JVM调优问题小结_第32张图片

ALL Objects(全部对象)

JProfiler11使用教程之JVM调优问题小结_第33张图片

Recorded Objects (记录对象)

我们可以指定开启时间内记录对象的的使用情况,这样就能更佳快速的找到问题 ,每次开关都会从新统计,还有最关键的就是 Mark Current 这个按钮,他可以标记现在对象的使用情况为绿色,那么行增的对象就是红色了,这样一对比就知道那个对象有问题了

JProfiler11使用教程之JVM调优问题小结_第34张图片

右键可以删除标记

JProfiler11使用教程之JVM调优问题小结_第35张图片

Allocation Call Tree(记录调用树)

开始后统计调用情况,每次开关都会从新统计

JProfiler11使用教程之JVM调优问题小结_第36张图片

Allocation Hot Spots(热点)

能统计出来开启时间段内使用某些方法或者xxx 的调用情况,相当于反向查询谁调用我了,开关后从新统计

JProfiler11使用教程之JVM调优问题小结_第37张图片

上图显示println这个方法被 MathGame.run 和MathGame.main方法调用,以及他们这些方法一共调用了多少次和多少时间以及占用的内容大小

Class Tracker(类调用跟踪)

能检测指定类,的时间片段调用情况和调用频率来进行分析出来,是否有问题

选择需要监控的类或者包那那么当这些类进行被调用了,就会在视图上显示

JProfiler11使用教程之JVM调优问题小结_第38张图片

JProfiler11使用教程之JVM调优问题小结_第39张图片

可以看到在什么时间调用了 ,如果想暂停下来

JProfiler11使用教程之JVM调优问题小结_第40张图片

检测各种调用情况

JProfiler11使用教程之JVM调优问题小结_第41张图片

Call Tree (调用树)

JProfiler11使用教程之JVM调优问题小结_第42张图片

通过关闭在开启可以重新统计

JProfiler11使用教程之JVM调优问题小结_第43张图片

一般情况我们会过滤掉我们不想看到的内容

JProfiler11使用教程之JVM调优问题小结_第44张图片

选择demo.就是过滤此包下的全部内容,想要恢复过滤内容可以在设置里进行恢复

JProfiler11使用教程之JVM调优问题小结_第45张图片

Hot Spots(热点)

JProfiler11使用教程之JVM调优问题小结_第46张图片

Call Graph(查看方法的调用树)

JProfiler11使用教程之JVM调优问题小结_第47张图片

JProfiler11使用教程之JVM调优问题小结_第48张图片

Method Statistics(方法统计)

开启后,这段时间内被调用的方法就会被拦截到

JProfiler11使用教程之JVM调优问题小结_第49张图片

JProfiler11使用教程之JVM调优问题小结_第50张图片

Call tracer 调用跟踪

开启后会记录这段时间内的方法执行情况包括内部执行情况,关闭后以树展示出来

JProfiler11使用教程之JVM调优问题小结_第51张图片

JProfiler11使用教程之JVM调优问题小结_第52张图片

JProfiler11使用教程之JVM调优问题小结_第53张图片

从上图标记是红的,就能看出来方法内部执行了循环了

如果不想看到某方法那么可以隐藏掉

JProfiler11使用教程之JVM调优问题小结_第54张图片

恢复显示

JProfiler11使用教程之JVM调优问题小结_第55张图片

JavaScript XHR

JProfiler Origin Tracker_v1.0.3.crx

链接: https://pan.baidu.com/s/1gnhtmBIcUYJbxecmrKojPg?pwd=rrpu 
提取码: rrpu 

要使用此功能,您必须使用Google Chrome 作为浏览器并安装 JProfiler 源跟踪器扩展。

JProfiler11使用教程之JVM调优问题小结_第56张图片

JProfiler11使用教程之JVM调优问题小结_第57张图片

运行前端时候点击下

JProfiler11使用教程之JVM调优问题小结_第58张图片

JProfiler11使用教程之JVM调优问题小结_第59张图片

然后插件颜色就变为红色了,那么就说明这个网站激活成功了

JProfiler11使用教程之JVM调优问题小结_第60张图片

然后回到 jprofiler中就发现在监听中了

JProfiler11使用教程之JVM调优问题小结_第61张图片

检测线程各种情况

注意: 如果请求的线程内部没有长时间的阻塞或者睡眠,一般都抓不到的,因为更新频率是2秒一次

JProfiler11使用教程之JVM调优问题小结_第62张图片

Thread History(线程状态)

JProfiler11使用教程之JVM调优问题小结_第63张图片

看着图很简单,除了绿色的其他如果时间过长都有问题,如果出现红色那么就是死锁
测试方式就是打开监控后去访问有问题的功能,那么就能排查出来具体的问题, 找到问题的线程,那么我们就能去获取这个线程内部的堆栈,从堆栈中就能看出来问题是啥

Thread Monitor(线程列表)

如果线程过多, 在Thread History中不好找那么我们可以通过这个列表进行筛选,这样就能快速锁定有问题的线程了

JProfiler11使用教程之JVM调优问题小结_第64张图片

JProfiler11使用教程之JVM调优问题小结_第65张图片

Thread Dumps(线程堆栈)

通过上面的方法找到问题的线程方法后,然后我们就能在 Thread Dumps去查询对应方法的堆栈信息
每次点击都能获取最新的全部线程堆栈信息,并且以树型展示

JProfiler11使用教程之JVM调优问题小结_第66张图片

JProfiler11使用教程之JVM调优问题小结_第67张图片

JProfiler11使用教程之JVM调优问题小结_第68张图片

上图红色的就是死锁,告诉你这个锁发生在那个类多少行

这种都是第三方的请求,(有用户的有其他工具的,要会分辨,看堆栈就能看出来的)

JProfiler11使用教程之JVM调优问题小结_第69张图片

类似于下图这种就不用看,这都是系统自己的请求或者其他的请求

JProfiler11使用教程之JVM调优问题小结_第70张图片

上图是tomcat内部进行唤醒和挂起线程的操作,估计是线程池的东西

我们一般找下面这图出现的请求这个才是真实的请求

JProfiler11使用教程之JVM调优问题小结_第71张图片

从上图就能看出来问题了,是内部一直在调用sleep,看堆栈是从下往上看,然后我们去看源码

JProfiler11使用教程之JVM调优问题小结_第72张图片

数据库连接和sql语句执行情况

JProfiler11使用教程之JVM调优问题小结_第73张图片

Mybaitis 和JDBC都一样

JProfiler11使用教程之JVM调优问题小结_第74张图片

1秒(s)=1000毫秒 1毫秒(ms)=1000微妙 10万微妙(us)=1秒
从上图可以看到我查询用户数量才使用了1毫秒不到

可以进行开关进行从新监控

JProfiler11使用教程之JVM调优问题小结_第75张图片

请求情况

JProfiler11使用教程之JVM调优问题小结_第76张图片

注意: 如果是请求是死循环或者死锁那么这个是监控不到的,必须这个请求能响应才行

至于其他的功能我基本没用到这里就不说了,用到了在补上

堆快照分析 导出当前堆的快照

JProfiler11使用教程之JVM调优问题小结_第77张图片

导入对堆文件快照

JProfiler11使用教程之JVM调优问题小结_第78张图片

分析堆快照

JProfiler11使用教程之JVM调优问题小结_第79张图片

Current Object Set(当前堆的所有对象情况)

一般需要多个堆的快照进行对比,进行发现是否有内存泄露问题和对象增长速度过快问题,从而进行分析原因

Thread Dump(当前堆的线程情况)

可以查看到死锁,或者死循环或者长时间处于等待状态的线程,执行的方法和问题原因

比较快照

注意: (.hprof)文件的快照只支持内存比较 ,而jps快照是支持所有的,但是需要开启部分功能才行

我准备了3个同源的堆快照(.hprof),是在不同时间段获取的

JProfiler11使用教程之JVM调优问题小结_第80张图片

JProfiler11使用教程之JVM调优问题小结_第81张图片

同时选取需要对比的全部快照

JProfiler11使用教程之JVM调优问题小结_第82张图片

当然也可以后期一个一个添加

JProfiler11使用教程之JVM调优问题小结_第83张图片

JProfiler11使用教程之JVM调优问题小结_第84张图片

然后按住Shift+鼠标左键选择2个需要对比的快照(一次最多对比2个快照,建议拿第一个快照和比第一个时间段大的快照进行依次对比)

内存比较

JProfiler11使用教程之JVM调优问题小结_第85张图片

JProfiler11使用教程之JVM调优问题小结_第86张图片

加号就是 333333.hprof这个快照比00000.hprof快照增加的
最后下面有一个汇总,333333.hprof比00000.hprof 总体增加了还是减少了多少内存

对比不同时间段快照,可以看出来内存是一直处于增长的,还是有减有增,如果一直维持在一个范围那么可以接收的 ,如果对比多个快照发现都是一直处于增长没有减过那么肯定是有问题的,时间长了就会发生oom了

调用情况比较

必须开启

JProfiler11使用教程之JVM调优问题小结_第87张图片

然后保存为jps文件

JProfiler11使用教程之JVM调优问题小结_第88张图片

然后就可以进行对比了

JProfiler11使用教程之JVM调优问题小结_第89张图片

到此这篇关于JProfiler11使用教程之JVM调优的文章就介绍到这了,更多相关JProfiler11使用JVM调优内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(JProfiler11使用教程之JVM调优问题小结)