jprofiler9.2入门教程 联系客服

发布时间 : 星期五 文章jprofiler9.2入门教程更新完毕开始阅读

注意:在进入堆视图前,请设置监控区域,即在点击开始内存记录或者cup记录,若不

记录,Heap Walker 默认将分析JVM虚拟机的所有内存,增大了系统开销的同时也降低了结果的

的准确性。点击会出现如下弹框

选择Configure Recording profiles 配置监控范围cup记录或者是分配调用栈记录等等

以下是配置监控区域和不配置监控区域的对比图

CPU视图(CPU views)

cpu视图由5个子分析视图共同组成,从不同层面展示了程序对cpu的使用情况

Call Tree View :以树结构自顶向下显示线程方法调用树以及各个方法对cpu的使用情况 Hot Spots View :显示消耗内存最多的类型树列表,每个节点显示具体方法占用cpu的比例 Call Graph :显示一个从已选方法、类、包或J2EE组件开始的访问队列的图。 Method Statistics :记录了方法调用的时间细节 Call Tracer :记录多线程方法调用的时间数序

JavaScript XHR Origin Tracking : js原始请求追踪,这个需要借助google浏览器的扩展插件

应用技巧:

观察某个时间段内线程方法对于 cpu 的使用情况, 如果某个方法对 cpu 长时间的高频 率占有,那程序肯定会慢,这时就要检查该方法中是否有什么非常耗时的计算,例如:在使 用 swing 的事件线程中进行了复杂运算,长时间占有 cpu,这时就要考虑对事件进行进行多

线程操作等。

线程视图(Threads)

该模块主要用来监控管理线程的运行状态。分三个子模块: Thread History :动态显示线程列表及线程的历史运行状态 绿色:表明线程正在运行并能接受CPU时间 橙色:线程正在睡眠等待计时器或者其他线程唤醒 红色:表示线程阻塞

蓝色:表示线程Net I/O操作,线程在等待Java库的网络操作完成,在线程监听socket链接 或者等待读写数据到socket中时,会产生这种状态。

Thread Monitor :显示所有线程的运行列表(包括执行状态、开始时间等) Thread Dumps :显示所有线程的堆栈跟踪

应用技巧:

根据Thread History 可以查看当前系统是否有线程堵塞的情况(红色表示线程阻塞)若存

在,只需在当前线程上右击选择show call tree for selected Thread 在call tree视图查看线程 分配调用树以及cpu的占用率,在相关的类方法上右击选择call graph 可以直观的查看线程调用 树并追踪出阻塞的方法或者类

锁视图(Monitor&locks)

该模块显示了JVM内部锁及监控运行的状态,分三个模块: Current Locking Graph :显示JVM当前的锁定情况 Current Monitors :显示等待或者阻塞的线程

Locking History Graph :显示记录在JVM中的锁定历史 Monitor History :显示显示历史等待或者阻塞的线程 Monitor Usage Statistics :静态计算统计监控器搜集的数据

应用技巧:

通过Current Locking Graph可很直观的查看当前线程锁定状态及线程和监视器的关系。

黄色箭头:线程等待 红色箭头:线程死锁

黑色箭头:指示了监视器对线程的所有权

数据库快照对比(Databases)

该模块给出了5中预定义的数据库探针,JDBC、JPA/Hibernate/MongDB/Cassandra/HBase 可根据自身程序所采用的数据库框架选择合适的探针,来进行性能监控。

注:探针(Probe):Jprofiler会根据相关技术框架,比如hibernate生成一套专门针对框架的 性能监控系统,称之为“探针”

Java探针(JEE&Probes)

该模块同第七节类似,预定了10个探针servlets、JNDI、JMS、RMI、webService、classLoader、 Exception、sockets、Files、Process等,基于这些探针在web项目中用途不是很大,这里不 在赘述每个探针的具体用法。在实际使用中可根据具体项目架构选择合适的探针进行性能测试。

Mbeans

Managed Bean (MBean) 描述一个可管理的资源.是一个java对象。它提供接口,可以使这个类具有 管理功能。

该模块列出了所有已经注册的MBeans,并且可对MBean的属性进行查看和修改。

案例分析

光说不练假把式,以上说了一大堆的功能介绍、技巧分析,到底实际的使用情况如何,下面做个详细的案

例介绍。本案例使用Jprofiler9分析员工管理系统和文件管理系统的性能,所有截图皆来自真实项目数据。

本案例采用window客户端远程监控Linux Tomcat运行性能,需要在window和Linux安装想同版本的

Jprofiler,并采用非等待模式做监控。具体安装请参考第二小节。

安装后,要对Jprofiler做配置,这点在前面的小节中未介绍,现在,在这里着重强调一下。Jprofiler是

一款性能分析软件,它会大量的抓取被监控服务器的代码信息,并对访问的热点做统计分析,生成相关的图表 或汇总结果,如果不做配置,Jprofiler默认情况会对监控的所有程序进行分析,包括项目的基础框架,第三方Jar等等,这样会造成非常大的系统开销,而且这些jar或者java程序也不是我们要所关注的点,所以,无形中分散了对目标对象的监控。为了明确监控目标、降低系统开销,做如下公共配置。 (1)设置过滤器

主菜单->SessionSetting->Filter Setting 添加需要被profiled的包或者类