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

安装JProfiler

jprofiler_windows-x64_11_0_2

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

JProfiler11破解

然后打开破解机器 KeyGen.exe

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

配置本地监控

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

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

配置远程监控

我的服务器是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 启动会失败的

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

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

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

配置window下的jprofile11

jProfiler客户端介绍

仪表盘

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

查看对象增长情况

ALL Objects(全部对象)

Recorded Objects (记录对象)

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

右键可以删除标记

Allocation Call Tree(记录调用树)

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

Allocation Hot Spots(热点)

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

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

Class Tracker(类调用跟踪)

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

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

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

检测各种调用情况

Call Tree (调用树)

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

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

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

Hot Spots(热点)

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

Method Statistics(方法统计)

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

Call tracer 调用跟踪

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

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

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

恢复显示

JavaScript XHR

JProfiler Origin Tracker_v1.0.3.crx

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

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

运行前端时候点击下

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

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

检测线程各种情况

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

Thread History(线程状态)

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

Thread Monitor(线程列表)

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

Thread Dumps(线程堆栈)

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

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

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

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

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

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

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

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

Mybaitis 和JDBC都一样

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

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

请求情况

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

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

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

导入对堆文件快照

分析堆快照

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

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

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

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

比较快照

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

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

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

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

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

内存比较

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

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

调用情况比较

必须开启

然后保存为jps文件

然后就可以进行对比了

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

(0)

相关推荐

  • jvm垃圾回收之GC调优工具分析详解

    进行GC性能调优时, 需要明确了解, 当前的GC行为对系统和用户有多大的影响.有多种监控GC的工具和方法, 本章将逐一介绍常用的工具. JVM 在程序执行的过程中, 提供了GC行为的原生数据.那么, 我们就可以利用这些原生数据来生成各种报告.原生数据(raw data) 包括: 各个内存池的当前使用情况, 各个内存池的总容量, 每次GC暂停的持续时间, GC暂停在各个阶段的持续时间. 可以通过这些数据算出各种指标, 例如: 程序的内存分配率, 提升率等等.本章主要介绍如何获取原生数据. 后续的章

  • Java JVM调优五大技能详解

    目录 1.什么时候需要JVM调优 2.JVM调优一般调什么 3.JVM调优基本步骤 3.1添加GC日志相关的参数 3.2添加内存溢出与Full gc前快照输出参数 3.3通过日志确定问题 3.3.1堆内存不足 3.3.2频繁Full gc 4.监控工具 4.1使用jstat 统计gc相关信息 4.2使用jmap命令查某时刻的JVM堆信息 5.常用的调优工具有哪些? 总结 1.什么时候需要JVM调优 应用的响应慢.CPU占用高 应用吞吐量小,占用内存空间过大 这些表象一般伴随着频繁的垃圾回收,或者

  • jvm调优的几种场景(小结)

    目录 一.cpu占用过高 (1)用top命令查看cpu占用情况 (2)用top -Hp命令查看线程的情况 (3)把线程号转换为16进制 (4)用jstack工具查看线程栈情况 二.死锁 三.内存泄漏 四.总结 假定你已经了解了运行时的数据区域和常用的垃圾回收算法,也了解了Hotspot支持的垃圾回收器. 一.cpu占用过高 cpu占用过高要分情况讨论,是不是业务上在搞活动,突然有大批的流量进来,而且活动结束后cpu占用率就下降了,如果是这种情况其实可以不用太关心,因为请求越多,需要处理的线程数越

  • jvm垃圾回收GC调优基础原理分析

    目录 核心概念(Core Concepts) Latency(延迟) Throughput(吞吐量) Capacity(系统容量) 相关示例 Tuning for Latency(调优延迟指标) Tuning for Throughput(吞吐量调优) Tuning for Capacity(调优系统容量) 说明: Capacity: 性能,能力,系统容量; 文中翻译为”系统容量“; 意为硬件配置. GC调优(Tuning Garbage Collection)和其他性能调优是同样的原理.初学者

  • IDEA集成JProfiler11可视化工具的详细流程(安装、集成、测试)

    以上是集成测试后的Jprofiler演示效果图 今晚想在IDEA中集成一下JProfiler11(现在有12版本了)工具,去网上看了下都是老版本IDEA,也没有合适的,工具都不是免费的.于是就自己一步步折磨,也是佩服自己,全程没有百度踩着坑集成成功了,现在是凌晨一点了,为了一步步演示我还得把安装得卸载了,想哭.还是想把这个早点分享给大家.要是你们集成成功了,给我点个关注或者点个赞就好了,哈哈哈,开始吧. 一.下载JProfiler11工具 这个版本2020 .1也是可以的.我还给你们找了miya

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

    安装JProfiler jprofiler_windows-x64_11_0_2 链接: https://pan.baidu.com/s/1EWxW5VT100D1v_HVvKYGqQ?pwd=qif5 提取码: qif5 JProfiler11破解 然后打开破解机器 KeyGen.exe 链接: https://pan.baidu.com/s/13MX6iLFtcmerdGovYjOh4g?pwd=cx7e 提取码: cx7e 配置本地监控 我们启动一个本地项目weblogic,Jboss,t

  • 基于JVM 调优的技巧总结分析

    这篇是技巧性的文章,如果要找关于GC或者调整内纯的文章,看我其他几篇文章.因为是JVM 调优总结,所以废话少说.从各方面一共收集到以下几个方法:1.升级 JVM 版本.如果能使用64-bit,使用64-bit JVM.    基本上没什么好解释的,很简单将JVM升级到最新的版本.如果你还是使用JDK1.4甚至是更早的JVM,那你首先要做的就是升级.因为JVM从1.4- >1.5->1.6可不是仅仅的版本号升级,或者仅仅往里面加了一堆新的语言特性,这么简单.而是真正在JVM做了重大的改进,每次版

  • 优化Java虚拟机总结(jvm调优)

    堆设置 -Xmx3550m:设置JVM最大堆内存为3550M. -Xms3550m:设置JVM初始堆内存为3550M.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存. -Xss128k:设置每个线程的栈大小.JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K.应当根据应用的线程所需内存大小进行调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右. -Xmn2g:设置堆

  • Jvm调优和SpringBoot项目优化的详细教程

    一.Jvm调优. 参考文章 1.先看一下未设置JVM参数的情况,默认情况下,没有设置任何Jvm参数. idea中安装VisualVM监控jvm的图文教程 2.设置Jvm参数. 配置参数: 关于这些设置的JVM参数是什么意思,参考Jvm调优. -XX:MetaspaceSize=128m (元空间默认大小) -XX:MaxMetaspaceSize=128m (元空间最大大小) -Xms1024m (堆最大大小) -Xmx1024m (堆默认大小) -Xmn256m (新生代大小) -Xss256

  • java虚拟机之JVM调优详解

    JVM常用命令行参数 1. 查看参数列表 虚拟机参数分为基本和扩展两类,在命令行中输入 JAVA_HOME\bin\java就可得到基本参数列表. 在命令行输入 JAVA_HOME\bin\java –X就可得到扩展参数列表. 2. 基本参数说明: -client,-server: 两种Java虚拟机启动方式,client模式启动比较快,但是性能和内存管理相对较差,server模式启动比较慢,但是运行性能比较高,windos上采用的是client模式,Linux采用server模式 -class

  • JVM调优OutOfMemoryError异常分析

    目录 1.Java 堆溢出 1.1 设置JVM参数 1.2 测试代码 1.3 运行OOM日志 2.Java栈.本地方法栈溢出 2.1 设置JVM参数 2.2 测试代码 2.3 运行OOM日志 2.4 Java虚拟机OOM异常 3.Java 运行常量池溢出 3.1 设置JVM参数-注意区分jdk版本 3.2 测试代码 3.3 运行OOM日志 4.Java 方法区溢出-jdk8 4.1 设置JVM参数 4.2 测试代码 4.3 运行OOM日志 5.本机直接内存溢出 5.1 设置JVM参数 5.2 测

  • JVM核心教程之JVM运行与类加载全过程详解

    为什么要使用类加载器? Java语言里,类加载都是在程序运行期间完成的,这种策略虽然会令类加载时稍微增加一些性能开销,但是会给java应用程序提供高度的灵活性.例如: 1.编写一个面向接口的应用程序,可能等到运行时再指定其实现的子类: 2.用户可以自定义一个类加载器,让程序在运行时从网络或其他地方加载一个二进制流作为程序代码的一部分:(这个是Android插件化,动态安装更新apk的基础) 为什么研究类加载全过程? 有助于连接JVM运行过程 更深入了解java动态性(解热部署,动态加载),提高程

  • Java JVM原理与调优_动力节点Java学院整理

    JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.Java虚拟机包括一套字节码指令集.一组寄存器.一个栈.一个垃圾回收堆和一个存储方法域. JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行.是运行Java应用最底层部分. JDK(Java Development kit) 整个Java的核心,包括了Java运行环境(Java Runtime E

随机推荐