- 浏览: 88810 次
- 性别:
- 来自: 北京
文章分类
在给客户进行应用程序维护的过程中,我注意到一些关于高负载条件下的性能问题。理论上,增加对应用程序的负载会使性能有所下降,但是我认为性能下降的比率远远高于负载的增加,同时我也发现,性能可以通过改变应用程序的逻辑来提升。为了更详细地了解这一点,我们需要做一些性能分析,这时,我们自然就要用到一些性能分析工具。Java有许多的性能分析工具,可以帮助我们弄清楚这个问题,但是我们应该使用哪一款工具呢?
为了做出正确的选择,我列出性能分析应满足一些最低要求:
1. 必须包括对应用程序的类、方法及时间的监测
2. 必须包括对内存的监测
3. 必须具有易用性
我配置了一个使用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插件。希望本文能帮助你做出正确的选择。
为了做出正确的选择,我列出性能分析应满足一些最低要求:
1. 必须包括对应用程序的类、方法及时间的监测
2. 必须包括对内存的监测
3. 必须具有易用性
我配置了一个使用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插件。希望本文能帮助你做出正确的选择。
发表评论
-
Java对象引用类型
2013-05-09 09:55 894Java对象的引用类型分为强引用、软引用、弱引用和虚应用 强引 ... -
JVM调优大纲
2013-05-07 19:07 1714我觉得处理JVM调优问题需要以下五个步骤: ... -
hibernate根据hbm自动生成数据库
2013-04-27 10:26 1017今天碰到一个很老的项目,只有hbm文件没有数据库,想根 ... -
svn分支合并到主线的十大注意事项
2013-04-07 10:39 0svn是java软件工程师常用的版本控制工具,但是对于分支到主 ... -
这几年收集的java相关资料
2013-04-06 14:46 614以下是我搜集的java相关资料,有需要的可以联系我,QQ470 ... -
一种JavaWeb项目开发部署方式
2012-11-16 09:37 1091以前在myeclipse开发Java Web项目的时候 ... -
tomcat支持中文路径图片问题
2012-11-12 14:51 2638今天,上传图片,但是有文件夹是中文的或是图片文件名是中 ... -
已经安装jdk了,运行applet还是提示安装问题解决
2012-11-08 10:57 1242今天,同事的机子已经装了jdk,但是运行带有ap ... -
dojo笔记-初识dojo
2012-11-05 18:29 855dojo,一个js框架或类库,强大的面向对象的功能,强 ... -
集成到项目中web.xml报taglib标签错误
2012-10-31 15:45 805web.xml的报错位置: <taglib> ... -
润乾报表报错
2012-10-31 15:44 14901,runqianReportLogger : [DEBUG] ... -
使用润乾报表工具过程、心得和体会
2012-10-31 15:41 5596现在做的这个项目,需要导出相关报表,正好前几个 ... -
(转)Java开源软件六大帮派
2012-10-25 10:40 742原文链接:http://www.oschina.net/que ... -
windows下查看端口被占用的程序
2012-10-23 18:17 1257今天,莫名其妙,tomcat启动不了,报端口绑定错误, ... -
window.createPopup弹窗
2012-10-23 17:04 778在浏览器中,除了div弹窗、alert弹窗、新窗口弹窗 ... -
Linux安装jdk详解
2012-10-22 16:34 7131,下载JDK,肯定官网下载,有多种类型,源码包、bin包、r ... -
(转)Linux设备命名规则
2012-10-19 15:21 1029在我们使用的计算机中 ... -
(转)js控制IE打印功能
2012-10-19 09:07 1384今天做了个JS控制IE打印功能, 原始链接为:http://h ... -
apache软件基金会探究流程
2012-10-17 16:06 9211,简介: Apache软件基金会(也就是Ap ... -
Apache官网开源项目列表
2012-10-17 15:34 4444目前只提供这些,大部分是网上摘抄,希望自己有机会把他补充完整, ...
相关推荐
Java几款性能分析工具的对比
JProbe在简单易用的集成化套件中,为servlet、JSP和EJB应用代码提供了强大的Java性能分析、内存纠错、代码覆盖及线程分析功能。 JProbe Profiler JProbe Profiler * JProbe Profiler JProbe Profiler内置了Call ...
Keepfast 是一个性能分析工具,能够分析网站的资源构建性能和页面性能,生成性能报告并提供优化建议,让性能监控更方便。分析并生成构建性能报告,可直观的对比两个版本的构建性能,以便尽早发现构建性能问题,基于 ...
NULL 博文链接:https://hayesfrank.iteye.com/blog/1220974
相比之前的比对工具性能更加快速,直接运行java工程中的代码即可比对 1. 两个 MYSQL 数据库对象结构比对工具 (比如:本地测试库、远程运维库表结构、表中列等对比) 2. 比对结果导出EXCEL 存放于 “工程根目录”/...
NULL 博文链接:https://mingren135.iteye.com/blog/2410538
主要介绍了Java几种常用JSON库性能比较详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
JProbe在简单易用的集成化套件中,为servlet、JSP和EJB应用代码提供了强大的Java性能分析、内存纠错、代码覆盖及线程分析功能。 JProbe Profiler JProbe Profiler * JProbe Profiler JProbe Profiler内置了Call ...
APT Android Performance Testing Tools 开源项目 适用于开发自测和定位性能瓶颈 帮助测试人员完成性能基准测试 竞品测试 APT提供了CPU利用率实时曲线图 多维度内存实时曲线图 方便竞品对比测试和定位内存泄露问题...
JProbe在简单易用的集成化套件中,为servlet、JSP和EJB应用代码提供了强大的Java性能分析、内存纠错、代码覆盖及线程分析功能。 JProbe Profiler JProbe Profiler * JProbe Profiler JProbe Profiler内置了Call ...
引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 ...D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 一般书籍
写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 ...D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
FindBugs是一个静态分析工具,用于在Java程序中发现可能存在的bug。它通过检查类或者JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题。FindBugs不注重代码风格和格式,而是专注于检测真正的bug及潜在的...
为了工作方便,自己写的一个图形化界面的网络数据比较工具! 这里是其源代码,虽然不是多线程的,但还不错!
引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 7. 多媒体CD-ROM 8. 源代码 9. 编码样式 10. Java版本 ...D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 一般书籍
数据库差异对比工具。支持MSSQL。优化性能。改善显示界面,使UI更友好,美观
引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 6. 练习 ...D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
写在前面的话 引言 1. 前提 2. Java的学习 3. 目标 4. 联机文档 5. 章节 ...D.4.1 性能工具 D.4.2 Web站点 D.4.3 文章 D.4.4 Java专业书籍 D.4.5 一般书籍 附录E 关于垃圾收集的一些话 附录F 推荐读物
/ 301 11.3.2 公共子表达式消除 / 305 11.3.3 数组边界检查消除 / 307 11.3.4 方法内联 / 307 11.3.5 逃逸分析 / 309 11.4 Java与C/C++的编译器对比 / 311 11.5 本章小结 / 313 第五部分 高效并发 第12章 ...