性能调优必备神器-Jprofiler解析
每天进步一点点,关注我们哦,每天分享测试技术文章
本文章出自【码同学软件测试】
码同学公众号:自动化软件测试,领取资料可加:magetest
码同学抖音号:小码哥聊软件测试
01
安装JProfiler
从http://www.ej-technologies.com/下载5.1.2并申请试用序列号
02
主要功能简介
1.内存剖析 Memory profiler
JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
- 所有对象
- 显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前值并显示差异值。
- 记录对象 Record objects
- 显示类或所有已记录对象的包。你可以标记出当前值并且显示差异值。
- 分配访问树 Allocation call tree
- 显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息的J2EE组件。
- 分配热点 Allocation hot spots
- 显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录树。
2.堆遍历 Heap walker
在JProfiler的堆遍历器(Heap walker)中,你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:
- 类 Classes
- 显示所有类和它们的实例。
- 分配 Allocations
- 为所有记录对象显示分配树和分配热点。
- 索引 References
- 为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示能。还能提供合并输入视图和输出视图的功能。
- 数据 Data
- 为单个对象显示实例和类数据。
- 时间 Time
- 显示一个对已记录对象的解决时间的柱状图。
3.CPU 剖析 CPU profiler
JProfiler 提供不同的方法来记录访问树以优化性能和细节。线程或者线程组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包或J2EE组件等不同层上。CPU视图部分包括:
- 访问树 Call tree
- 显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队列。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据Servlet和JSP对URL的不同需要进行拆分。
- 热点 Hot spots
- 显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请求来进行计算。
- 访问图 Call graph
- 显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。
4.线程剖析 Thread profiler
对线程剖析,JProfiler提供以下视图:
- 线程历史 Thread history
- 显示一个与线程活动和线程状态在一起的活动时间表。
- 线程监控 Thread monitor
- 显示一个列表,包括所有的活动线程以及它们目前的活动状况。
- 死锁探测图表 Deadlock Detection
- 显示一个包含了所有在JVM里的死锁图表。
- 目前使用的监测器 Current monitor useage
- 显示目前使用的监测器并且包括它们的关联线程。
- 历史检测记录 History usage history
- 显示重大的等待事件和阻塞事件的历史记录。
- 监测使用状态 Monitor usage statistics
- 显示分组监测,线程和监测类的统计监测数据。
5.VM 遥感勘测技术 VM telemetry
观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示:
- 堆 Heap
- 显示一个堆的使用状况和堆尺寸大小活动时间表。
- 记录的对象 Recorded objects
- 显示一张关于活动对象与数组的图表的活动时间表。
- 垃圾回收 Garbage collector
- 显示一张关于垃圾回收活动的活动时间表。
- 类 Classes
- 显示一个与已装载类的图表的活动时间表。
- 线程 Threads
- 显示一个与动态线程图表的活动时间表。
03
配置
一、 JProfiler’s start center
在安装完毕后打开会有一个页面向导
使用 JProfiler’s start center,你可以创建新的会话,编辑已有会话或者打开已保存的会话。
在菜单中选择 start center,也可以打开这个向导页面、有以下四个标签:Open session、New session、Convert session和 Open snapshot。
我们可以先看第一个——
1.1 Open session
在 start center 中,打开 Open session标签,在窗口中显示所有预先定义的会话,如上图:
- 你可以选择一个会话,点击 OK来打开预定义的会话。
- 会话也可以被修改、复制、删除和排序。
- 也可以菜单中选择 session –> Open session,打开 Open session窗口。
1.2 New session
会话能够通过两种途径创建:
第一种:人工配置:使用New session]按钮手工配置一个新的session,配置完成后,开始运行(如何配置详见下面)
第二种:通过集成向导:使用集成向导上的三个按钮:[New server integration] 、[New remote integration] 和 [New applet integration] 。
会话创建完成后可以立即运行。在 Open session标签页中能够看到新建的会话。
1.2.1 New Session(人工配置创建)
点击 New Session按钮,显示Application Settings窗体
此页面也可以在菜单中选择 Session–>New Session,打开 New Session 窗体
1.2.2 New server integration(通过集成向导创建)
点击 New server integration按钮,打开集成向导,引导你将 JProfiler与本地或远程的应用服务器进行集成。
步骤:
第一步、选择需要集成的应用服务器。
如果你所使用的应用服务器不在列表中,则选择“Generic application sever ”,并点击“下一步”;如图:
第二步、 选择要集成的应用服务器地址
选择要集成的应用服务器是本地的,还是远程的。如果你选择远程计算机,在选择的计算机上必须安装 JProfiler,并选择远程计算机的操作系统,点击“下一步”如图:
第三步:选择 JVM提供商,版本和模式(也就是指定jdk的版本)
当你选择 jdk版本时,系统会自动选择推荐的模式
免费领取码同学软件测试课程笔记+超多学习资料+完整视频+面试题,可加微信:magetest
第四步、选择 Jprofiler 启动界面方式。
在开发环境,建立选择第一项,很容易修改监测设置;如果你选择不等待,在启动应用服务器之前要先配置监测设置。VM参数依赖于 JProfiler配置文件的位置;配置文件要与远程计算机上的保持同步。
- wait for a connection from the Jprofiler GUI :监控时 tomcat 需要由 JProfiler来启动
- startup immediately,connect later with the JProfiler GUI:立即启动,稍后与JProfiler 页面连接
- profile offline ,JProfiler GUI cannot connect :在脱机情况下,jprofiler gui 无法连接
我选择第一个立即启动稍后连接(有兴趣的可以都尝试一下)
第五步:选择 Tomcat 启动脚本文件路径
第六步:指定JPfrofiler的端口(选择监测的连接端口)
JProfiler GUI 前端通过指定的端口连接被监测的 JVM,默认端口为 8849。请不要选择常用的端口,如 80或 8080。
第七步:检查需求通知
集成向导完成配置,所有必须的信息会进行通知,请检查,点击下一步。如图:
第八步:完成是否立即运行
这里就新建一个session完毕。配置完毕后你会在Open session 中看到你配置的内容。选择启动、因为在第四步中选择了第一种。所以会出现
选择第二个、之后会出现
点击ok、则启动成功了!
*这里有个问题:
在第四步中如果选择了第二种。那么无论是tomcat启动没有启动JProfiler都启动不了抛出一个Connection error的错
待排查
而在第四步选择第三种方式时。tomcat有没有启动JProfiler抛上面相同的错误。同上面。
待排查
1.3 Open snapshot
可以通过打开*.jps文件来打开原来保存过的 session
二、 管理 session(不做详解)
2.1 Application settings dialog
这个页面可以是在创建session时管理,也可在open session右键编辑管理(如前面人工配置图片)
session 名称 session类型等根据需要自定义
三、内存视图
JProfiler 的内存视图部分可以提供动态的内存使用状况更新视图和显示关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存在的对象和作为垃圾回收的对象。
免费领取码同学软件测试课程笔记+超多学习资料+学习完整视频 ☞ 可加:magetest/关注码同学公众号:自动化软件测试
本文著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。