(转)JProfiler试用手记

JProfiler是一款Java的性能监控工具。可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,这里提供有几篇文章供参考:获取、介绍,简单入门,使用JProfiler解决实际问题。这几篇文章基本介绍了常见东西了,下面说点心得。

AD:51CTO学院:IT精品课程在线看!

所谓“工欲善其事,必先利其器”,好的工具确能起到事半工倍的作用。我用到的最多的就两个JConsole 和JProfiler 。JConsole监控系统内存变化情况,如果有内存溢出的话,垃圾回收将会呈现锯齿状。发现问题以后,使用JProfiler,在小压力(或无压力)的情况下监控对象变化,定位内存溢出原因。

JProfiler是一款Java的性能监控工具。可以查看当前应用的对象、对象引用、内存、CPU使用情况、线程、线程运行情况(阻塞、等待等),同时可以查找应用内存使用得热点,即:哪个对象占用的内存比较多;或者CPU热点,即:哪儿方法占用的较大得CPU资源。我使用的是4.3.2版本,以前试用过3**版本,不过那个bug比较多,容易死,4**版本稳定多了。

有了上面那些信息对于系统的调优会有很大帮助。这里提供有几篇文章供参考:获取、介绍,简单入门,使用JProfiler解决实际问题。这几篇文章基本介绍了常见东西了,下面说点心得。

  1. JProfiler监控是要消耗系统资源的,所以一般情况下不要用于性能测试时候的监控。
  2. 如果要用于相对大压力情况下,可以有选择的打开监控项,不用所有都打开。主要有两个,一个是内存监控,打开的情况下可以查找内存分配热点。一个是CPU监控,打开的情况下可以查看CPU使用热点。

如图所示,红笔标注部分。如果两个都关闭的话,还是可以跑一定压力的,同时还可以监控对象数量。

  1. 个人认为最好用的(也是用的最多的)是查询当前的对象的数量。数量监控很重要,如果你使用了单例,那么你只会看到有一个对象存在,如果多了就说明程序有问题了。同样,如果应用进行一系列操作,检查一下该销毁的对象是否还继续存在,如果没有释放,就得考虑是否存在内存溢出了。
  2. JProfiler还提供了一个比较好的检查内存溢出得工具。他可以查找某个对象的引用情况,即:当你发现某个该释放掉的对象没有释放,就可以看一下哪个实例在引用它,找到了根即找到了溢出点。
  3. 具体操作如下:在 “Memory Views”界面中右键选择你要监控的对象,选择第一项“Take Heap Snapshot for Selection”,选择完成后会进入“Heap Walker”界面,界面下面提供几个功能,选择“References”即可 。如图:

  4. JProfiler提供不同的观察粒度,提供对类的监控、对包的监控、对J2EE组件的监控,同时过滤器也比较好用,直接定位你关注的包或类即可。
  5. JProfiler的监控可能与应用之间存在一定时间差,所以有些时候需要等待刷新,才能显示正确系统情况。

Windows客户端的JProfiler远程监控Linux上的Tomcat

1.测试环境

服务器:RedHat Linux 3.4.3-9.EL4(内核版本 2.6.9-5.EL),Tomcat5.5.20,Sun JDK 1.5.0_09,JProfiler 4.3.2 for linux(安装包:jprofiler_linux_4_3_2.sh)

客户端:Windows XP,JProfiler 4.3.2 for windows(安装包:jprofiler_windows_4_3_2.exe)

2.JProfiler软件下载地址 http://www.ej-technologies.com/

3.客户端 JProfiler 安装 略

4.服务器端 JProfiler 安装:

把 jprofiler_linux_4.3.2.sh 上传到到服务器,假设路径为 /opt/jprofiler

  1. # cd /opt/jprofiler
  2. # chmod +x *.sh
  3. # ./jprofiler_linux_4.3.2.sh -c

按照提示来安装,提示都很简单,不在多说。安装路径选择 /opt/jprofiler4

注意,这里的 -c 意思是用字符方式来安装,如果机器上没有 X 则加上该参数.

5.客户端连接配置

1). 运行 JProfiler 。第一次打开会有向导,忽略它。

2). 选择 Session->Integration Wizard->New Remote Integratation

3). 选择 On a remote computer;Platform of remote computer 选择 Linux x86/AMD 64;Next

4). 输入服务器 IP ;Next

5). 输入服务器上的 jprofiler 的安装路径,如 /opt/jprofiler4 ;next

6). 选择服务器的 JDK 环境,这里是:Sun,1.5.0,hotspot;next

7). 输入端口:这里是默认值 8849;next

8). 选择启动模式:这里选第一种 wait for a connection from the jprofiler GUI;next

9). 这里会列出需要在服务器端做的配置:

  1. Integration type: [Generic application]
  2. Selected JVM: Sun 1.5.0 (hotspot)
  3. Startup mode: Wait for JProfiler GUI

(1) Please insert

-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar

into the start command of your remote application right after the java command.

(2) Please add

/opt/jprofiler4/bin/linux-x86

to the environment variable LD_LIBRARY_PATH.

A remote session named Remote application on 192.168.40.15 will be created that connects to a running instance of the remote application that is started with the modified start command.

6.服务器端的配置

(1)修改系统环境配置文件 /etc/profile ,增加

  1. JPROFILER_HOME=/opt/jprofiler4/bin/linux-x86
  2. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JPROFILER_HOME

(2)修改TOMCAT启动文件catalina.sh,添加-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 内容到CATALINA_OPTS中;

“-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar ” 此内容由客户端软件生成

CATALINA_OPTS="$CATALINA_OPTS -Xms128m -Xmx128m $JPDA_OPTS -agentlib:jprofilerti=port=8849   -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar"

7.Reboot Linux and startup Tomcat using startup.sh;

The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

  1. JProfiler> Protocol version 23
  2. JProfiler> Using JVMTI
  3. JProfiler> 32-bit library
  4. JProfiler> Listening on port: 8849.
  5. JProfiler> Native library initialized
  6. JProfiler> Waiting for a connection from the   JProfiler GUI

8.启动客户端软件

点击jprofiler菜单 session>start center>Open Session

Available session configurations中列出了刚才配置的连接,选中使用就OK了!!

9.The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

  1. JProfiler> Using dynamic instrumentation
  2. JProfiler> Time measurement: elapsed time
  3. JProfiler> CPU profiling enabled
  4. JProfiler> Hotspot compiler enabled
  5. JProfiler> Starting org/apache/catalina/startup/Bootstrap

10.当中断JProfiler连接时

The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

  1. JProfiler> Disconnected. Waiting for reconnection.
  2. JProfiler> Listening on port: 8849.
时间: 2024-10-09 18:42:06

(转)JProfiler试用手记的相关文章

项目管理工具 Redmine 安装试用手记

项目管理工具 Redmine 安装试用手记 分类: Redmine2009-06-01 10:12 996人阅读 评论(1) 收藏 举报 项目管理工具sqliterubyrails数据库 昨晚闲逛ROR社区,无意间Redmine这款开源的项目管理工具映入我的眼帘,听说集合了Trac和BaseCamp的优点,安装下来试用一下,果然界面清新,功能简单但又齐全,相当适合用于小型团队开发,下面是我安装试用手记 :) 1.安装导向(官网)http://www.redmine.org/wiki/redmin

Microsoft Azure试用手记(一)

公司和微软签了VLSC,有此附赠培训微软的人介绍Azure(读作啊说儿,不是啊祖儿),各种脑洞大开的功能介绍完之后来了一句--现在大陆用不了,大伙就@#¥@#¥¥%!你懂的. 偶然机会我关注了微软科技的微信号 mstech2014 一天无聊看订阅号推送,发现Azure放号,就赶紧点进去,填了各种信息,提交后提示等待管理员审核.过了两天我把这事儿给忘了,又是偶尔check垃圾邮件收件箱,发现邀请码静静的躺在里边...废话不多说,有图有真相. 一.激活信     激活信的内容很简单,无非就是注册地址

Web软件开发工具WebBuilder试用手记

最近公司在使用WebBuilder做项目开发,感觉很不错. 官方主页在这里:http://www.putdb.com/ 可以看到,这货不仅能使用可视化的方式拖拽出界面,还能直接在页面上完成数据库相关的操作.对于企业级的应用来说,一般会涉及到非常复杂的表单布局,以及大量的数据库交互.使用WebBuilder则只要打开一个浏览器就可以了,plsql神马的,一般的开发就无需打开了. Amdocs也有一款类似的在线动态表单设计器,不过整体使用手感不如WebBuilder这么流畅,另外这款工具前端部分是基

IntelliJ IDEA 13试用手记(附详细截图)[转载]

从去年开始转java以来,一直在寻找一款趁手的兵器,eclipse虽然是很多java程序员的首选,但是我发现一旦安装了一些插件,workspace中的项目达到数10个以后,经常崩溃,实在影响编程的心情. 今天试用了近年获得众多好评的IntelliJ IDEA 13,感觉焕然一新,记录如下: 一.下载安装 http://www.jetbrains.com/idea/download/ 这是官网的下载地址,支持mac/windows/linux三大主流平台,我今天试用的是mac版本 说明:Intel

Docker运维必备:监控宝Docker监控试用手记

本文由肖远昊深度实践docker监控的报告   非常荣幸得到监控宝的邀请,试用了他们最近推出的新产品--Docker监控. 9月7日,中国APM厂商云智慧CloudWise正式发布上线Docker监控,该产品从部署到使用,整个过程都非常的简单.不仅能够实时监控宿主机和Docker容器的性能信息(包括CPU.Mem.磁盘.Net In/Out),还可以自定义相应的告警策略.以下将从部署.监控信息.告警这几个方面聊聊试用体会.大家可以[注册]监控宝,免费使用Docker监控. 部署流程 阅读了Doc

[转发]RTH试用手记之“外场应用”

年初,罗德与施瓦茨公司(Rohde & Schwarz)推出了第一款的手持示波器,从指标上看,该示波器打破了传统手持器功能简单.指标水平低.结构粗糙的印象,取而代之达到了主流台式数字示波器的性能,在使用方式和功能上,将手持示波器的发展到了一个新的水平.华睿集成有幸较早的获得了RTH试用的资格,我们通过实际的测试和比较,看看这一款新定义的手持示波器到底能给客户带来多大的惊喜. 作为一款手持示波器,会经常应用在外场环境,这就要求设备在设计和定义中,要全面考虑外场的环境和条件,那RTH针对外场环境有哪

linux下的powershell,pash试用手记

------1 概述------ 1.1 简单来说linux,unix是非常依赖脚本的,而win不是.win中有很多图形程序+c库,效率不比脚本差.点几下鼠标照样能完成需求.当 然,图形和字符是两码事,不能完全替代. 1.2 win中的bat和linux中的bash都是老脚本语言,纵横沙场几十年,功勋卓著.但由于太老,有很多限制和缺陷.用起来比python和powershell差 很多,麻烦很多.一般来讲玩python和powershell的不乐意用.总之新的大有替代老的之势. 1.3 简单来讲

【转】JMeter试用手记

JMeter是一款性能测试工具.个人认为与其说他是一个工具,不如说他是一个框架.因为JMeter的支持范围非常广,目前常见的需要进行性能测试的应用几乎都能应用(如:files, Servlets, Perl scripts, Java Objects, Data Bases and Queries, FTP Servers).JMeter的一大好处就是它内部已经有实现好的线程机制,用户不用写任何关于并发的东西,只需做简单配置即可.同时他页提供了一些类似插件的东西,用于线程运行时的控制:其次,JM

visual studio 2013的C++开发环境不错--vs2013安装试用手记

原文:http://blog.csdn.net/haoyujie/article/details/24370189 从visual studio 体系,最后一次对C++实现了大的改进,那还是vs 7.1 ,那次微软终于大大地改进了编辑器. 而vs 2003事实上是vs 2002的升级. vs 2002的C++开发环境,事实上存在非常严重的BUG,根本就不能用. 从此以后,微软的vs 2005 , 2008 ,2010 ,2011 ,2012 都是要打SP1才能用于C++编程. 可以肯定,阿三们,