在给客户进行应用程序维护的过程中,我注意到一些关于高负载条件下的性能问题。理论上,增加对应用程序的负载会使性能有所下降,但是我认为性能下降的比率远远高于负载的增加,同时我也发现,性能可以通过改变应用程序的逻辑来提升。为了更详细地了解这一点,我们需要做一些性能分析,这时,我们自然就要用到一些性能分析工具。Java有许多的性能分析工具,可以帮助我们弄清楚这个问题,但是我们应该使用哪一款工具呢?
为了做出正确的选择,我列出性能分析应满足一些最低要求:
- 必须包括对应用程序的类、方法及时间的监测
- 必须包括对内存的监测
- 必须具有易用性
我配置了一个使用RESTful接口的Spring应用程序,使用MongoDB作为数据存储,还使用Solr搜索,并在Tomcat服务器上部署。
参考工具:
1.VisualVM
VisualVM是一个资源分析工具,一直从JDK 6更新到7,它默认内存和CPU的监视,它可以告诉你哪个类和方法消耗资源,但它不会显示代码流程。
2.JProfiler
JProfiler很容易安装,并且通过向导,你可以选择应用服务器用来运行应用程序。我不得不选择使用JPofiler应用服务器的主目录,以及向导生成的一个单独的启动脚本。然后运行服务器。在监听会话的过程中,它会提供几个选项,它可以记录内存的使用和CPU的使用率。在查看CPU使用率的同时,可以看到执行路径。这让我看到应用程序大部分时间都花在请求上。我们可以将IntelliJ插件安装到IDE上,那么运行JProfiler会更加便利。比如,可以直接帮我启动Tomcat。
3.YourKit
YourKit是我在另一个项目中偶然发现的一款性能分析工具,它的安装很简单。安装时有一个选项,可以安装一个插件到我的IDE。安装后,运行应用程序,使用该插件,它会自动连接到YourKit。它有一个漂亮的用户界面可以查看到内存和CPU的监测,同时也可以看到请求的执行路径。
4.JProbe
我刚开始创建JProbe时遇到点困难。安装并不是直接完成,我需要对它进行配置。它采用了类似JProfiler一样的设置。它会在你的Tomcat目录中生成启动脚本,可以通过脚本启动服务器并监听会话。它的界面包含有按钮和表格,其中可以看到内存的使用,但无法在进程中找到执行路径。
5.Spring Insight
听到TC Server有Spring Insight监控界面,于是我兴奋地尝试了一下。安装完成后,并设置成TC Server的开发者版,然后部署应用程序在TC Server上。我查看Insight界面,它可以很好的监视类和方法,并能看到完成这个方法用了多少时间。我还能看到输入参数值,以及返回值。由于我的应用程序是基于Spring的,Spring Insight能够提供非常有用的数据。TC Server插件在IDE上的配置与Tomcat的配置类似。SpringSource工具套件就自带Spring Insight。
结 论
看到这五款性能分析工具,我可以肯定地说,它们都非常不错。如果你有基于Spring的应用程序,那么选择Spring Insight显然是最佳的。它一直是免费的,但你需要部署你的应用在TC Server上。
如果你想监听本地和远程的进程,我会选择JProfiler或YourKit.这两个也可以帮助Spring Insight来监测、找到性能瓶颈。
JProfiler和YourKit已经能满足我的上述要求。JProfiler、YourKit和Spring Insight都可以跟踪应用程序的类和方法的流向。JProfiler和YourKit可以显示内存使用情况。虽然Spring Insight不可以显示内存使用情况,但它可以很好的显示吞吐量的趋势。这三款性能分析工具功能很清楚,不混乱,而且容易使用。最后,他们都有自己的 IDE插件。希望本文能帮助你做出正确的选择。
来自:chinaitlab
相关推荐
这个文件最重要的作用就是分析 Java 堆内存泄露问题,heap analyzer,MAT 等工具都可以分析这种文件。 Java core 文件保存的是 java 应用程序在崩溃时或任一时刻关于 Java 运行环境的各种信息。包括 Java 虚拟机的...
Java实现的Https请求工具类。 https的java工具类 Https
性能工具之Java调试工具BTrace入门(csdn)————程序
smali2java工具——直接将smali转换成java,在网上找了很久才找到了,方便后来人。
第四步 Token和工具类准备完毕,写人脸对比代码 2张对比图片 FaceMatch类 import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class FaceMatch{ /** * ...
java 调用百度人脸对比api接口(csdn)————程序
java性能优化介绍java性能优化方面的好的书籍,希望大家下载
很好用的JAVA类转JSON工具:FastJSON (2).pdf很好用的JAVA类转JSON工具:FastJSON (2).pdf
30个java工具类
太细了,堪称完美总结:“Java性能调优六大工具”之Windows工具(csdn)————程序
使用java工具类可有效的提高开发效率! 没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中...
Java 程序员必须掌握的 10 款开源工具!(csdn)————程序
java实现将xls或者xlsx文件转成csv文件
Java实现XML文档到word文档转换
用于对代码的对比,可以对比多种不同的编程语言的工具
一款JAVA开源的反编译工具,可以直接反编译JAVA的CLASS文件。
推荐一款Java实体映射工具---mapstruct(csdn)————程序
非常小,非常好用的一款JAVA打包工具,经过验证,值得下载!
1、java工具类RabbitmqUtil是本人封装好的直接使用 2、常用的方法都在里面 3、改一下初始化配置参数就行
java反编译工具,把.class文件转换成源码.java文件。jd-gui.exe