论坛首页 Java企业应用论坛

利用常用的profile工具来profile OSGI应用

浏览 10404 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2007-10-28  
我们在日常的开发过程中,难免遇到程序写得有漏洞的时候,比如数据库连接未释放啊,基于JMX,JMS的操作连接未释放啊,过多的对象创建啊,程序的性能 瓶颈啊等等,到了项目开发后期,常常会因为很早之前写得不太好得代码段而造成整个系统得运行效率下降,严重的则会造成系统崩溃。如何很好的解决这些隐藏得 问题呢?对了那就是使用profile工具对我们的系统进行从cpu,memory,thread方面的分析了。本篇文章,就是利用当前几个比较流行得 profile工具来讲解,如何利用这些工具对我们的基于OSGI系统进行profile。

这里我选取两个proflie工具来讲解,第一个是jprofiler,官网(http://www.ej- technologies.com/products/jprofiler/overview.html)上提供了两个非常详细的Demo来教大家 jprofiler的一些常用features,以及简单的使用方法,这里我就着重讲如何用jprofiler来profile我们的OSGI系统吧。

最简单的,jprofiler提供对某个可执行的jar,或者一段main程序来进行profile咯,对于我们的OSGI系统我们则要把它当作一个本地得application server来进行监控,操作都还简单,如下图进行选择。














注意,到了第6步Perform modifications这里得时候,要做重要的两步,第一将它给你得一段参数添加到我们利用命令行去启动我们的OSGI环境的“java”命令,一般 的我们以命令行去启动一个OSGI环境是利用命令"java -jar *.jar"的形式,这里我就只需要把jprofiler提供给你的那段命令添加到"java"命令后就可以了。







其次我们还需要将jprofiler\bin\windows加入环境变量。然后Next,这样就一个profile得配置就配好了。
一切准备就绪后,就启动我们的OSGI应用,如下图:





这样我们就可以看到jprofiler对我们的OSGI应用进行的实时的监控了,一般的最常用的要算是Memory View 和Thread View,其中都可以进行进行filter,这样,如果你看到某些对象一直在上升并得不到释放,或者某些线程在直线上升,你就应该大致的知道问题出在哪里 了吧。


在实际应用中,我们也发现了jprofiler对OSGI应用进行profiler时的一些小bug,不过大致说来还是不错的(因为有破解:))此外还要 注意一点,就是jprofiler好像不能识别空格,也就是说在以这种方式进行profile的时候,jprofiler要用到一个系统用户目录下的. jprofiler4文件夹下的一个xml,以及jprofiler4\bin下的agent,jar如果这些目录中有空格存在的话,jprofiler 是要报错的,大家留意一下.

接下来我再介绍一款profile工具:yourkit java profiler(http://www.yourkit.com/overview/index.jsp),这款工具我比较喜欢,目前为之也没有出现在 jprofiler中出现的一些bug,而且可以为很多IDE提供插件来直接在IDE中对我们的应用进行profile(当然jprofiler也可以) 唯一的不足就是7.0的版本还没有破解,不过6.0已经有了,大家可以去google一下。

使用起来yourkit也与jprofiler大致相同,接下来我就简单演示下如何用yourkit来对我们的OSGI应用进行profile。
先把YourKit Java Profiler 7.0.6\bin\win32加入你的path环境变量中。
然后写一个bat来以命令行的方式执行我们的OSGI应用,具体的写法你可以参照yourkit的安装目录下的samples目录中给你提供的一些 sample来写。我这里写了一个,其实我就copy了sample目录下得一个bat来改了改,这里要注意一点,如果你的应用是运行在jdk1.4或者 1.3之下的请使用-Xrunyjpagent这条命令,如果是在1.5以上则用-agentlib:yjpagent,我这里用后者
@echo off

bat 代码
  1. :: PATH should contain path to yjpagent.dll  
  2. set OLD_PATH=%PATH%  
  3. set PATH=..\..\bin\win32;%PATH%  
  4.   
  5. :: The following line is added to use JVMTI version of profiler agent in Java 5 or newer  
  6. set JAVA_TOOL_OPTIONS=-agentlib:yjpagent  
  7.   
  8. java -agentlib:yjpagent -jar startup.jar -console -clean -noExit  
  9.   
  10. :: restore PATH  
  11. set PATH=%OLD_PATH%  
  12. echo Press any key...  
  13. pause >nul  


然后把这个bat放至你的应用所在根目录,用这个bat去启动你的OSGI应用。
看,应用启起来了


然后到yourkit中去进行应用程序的搜索,yourkit会自动将当前注册了其监控agent的应用都搜索出来




OK,到这里,我们就可以开始用yourkit进行对我们的OSGI应用的profile了,和jprofiler相似的,它也可以从CPU,Memory,Tread几个方面对应用进行监控。




其中得Monitor Usage是我比较喜欢使用的,从这里可以看到当前具体线程的详细情况,来帮助我进行系统性能分析。



好了,到此就简单将几个profile工具如何对我们的OSGI应用进行profile的做法给大家介绍一下,其实在netbeans上面的 profile工具也是非常好用的,以后我还将深入的推出如何对利用这些profile工具对我们的OSGI应用进行一步步的性能调优工作,有感兴趣的同 学可以和我一起讨论。总之个人认为学会如何利用profile工具来优化或者debug我们的系统是非常有必要的,对提高系统的稳定性,健壮性帮助非常 大,也应该引起我们程序开发人员的注意。
   发表时间:2007-10-28  
现在最常用的是BEA JRockit,觉得最好!
0 请登录后投票
   发表时间:2007-10-28  
嗯,谢谢,我会去看看~
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics