基于Java的Web应用程序的分析工具

时间:2011-04-13 14:54:16

标签: java profiling profiler

我们正在开发一个使用Struts2 + Spring 3.x + Hibernate 3.x的Web应用程序。我们正在考虑使用良好的分析工具来避免任何潜在的问题。

我是这个领域的新手,所以在进行一些研究时想出了这两个候选人

  • 的JProfiler
  • VisualVM的

请提供您对这两个的反馈,或者如果有其他好的候选人请提出建议。 我对此也有更多疑问。

  1. 使用分析器作为项目的相关性仍处于中间位置。
  2. 因为我们最初会使用它 开发系统,所以我没有 认为它是生产的复制品 并且可能存在许多问题 只是在生产范围之外。
  3. 操作系统能有多大差异 在分析结果中的大多数 开发机器将是窗口 同时进行分期和 生产将基于Linux。
  4. 请提供宝贵的意见。

5 个答案:

答案 0 :(得分:3)

使用JProfiler。我使用它已经3年了,特别是对于CPU分析来说真的很棒。 VisualVM不提供JProfile所做的那种深入分析。它识别J2EE组件,并为您提供在流中触发的精确SQL。这非常重要,根据我的经验,95%的性能问题来自于不负责任和不必要的数据库命中。

因为您正在使用Hibernate,所以分析将帮助您确定何时启用延迟加载以及何时启用对象,查询和关联缓存。

要回答您的其他问题,

  1. 在您的项目处于什么阶段并不重要,如果您觉得效果不佳,则分析与您相关。不要拖延它,因为如果问题出在核心组件的设计中,它可能会在整个应用程序中传播,并且很难在后期阶段进行修复。

  2. duffymo的回答。

  3. 很多不同。我们的Linux机器具有相同的配置,通常比Windows机器更快,响应更快。但正如duffymo所回答的那样,分析可以为您提供热点以及每个组件和方法所花费的时间百分比。用于分析的应用程序类比正常情况(我使用JProfiler的经验)至少慢50%。

答案 1 :(得分:0)

VisualVM是一个了不起的工具。很难相信Sun / Oracle的JDK下载捆绑了这么好的东西。我建议使用JDK 6及更高版本。您所要做的就是获取应用程序的PID并将其提供给VisualVM;它会完成剩下的工作。

以下是对您问题的回答:

  

使用探查器的相关程度仍然处于中间位置。

我不确定你的意思。我假设您在询问分析器对性能的负面影响。你正在检查相对效果,而不是绝对数字。您可以基准性能,进行更改并重新测量。两者的Profiler是相同的。

  

因为我们最初会使用它   开发系统,所以我没有   认为它是生产的复制品   并且可能存在许多问题   刚刚超出生产范围。

您只会了解您衡量的系统。如果发展与生产不同,那么你所能做的最好的就是变化的相对影响,而不是绝对价值。

  

操作系统能有多大差异   分析结果大多数   开发机器将是窗口   在分期和生产的基础上   将以Linux为基础。

如果你担心,我会在Windows和Linux上对它进行基准测试。我的猜测是它可以忽略不计,但是一次性测量会证实或否认。

答案 2 :(得分:0)

如果您使用Eclipse,并从Eclipse启动您的开发服务器,那么请锁定Eclipse TPTP

答案 3 :(得分:0)

我对这两者没有任何经验,但我们确实运行了很多Java Web应用程序(servlet容器和游戏服务器平台)。我们的开发和生产服务器是Linux和BSD的混合体,而我们的开发人员几乎就是一切:Linux,MacOS,Windows。

对于我们的所有分析需求,我们使用Yourkit(http://www.yourkit.com/)。我们通常不会做很多分析工作来识别瓶颈等(虽然我们已经做了一些),但它却是一个很好的工具,可以找到死锁,内存泄漏,permgen问题等。

我们让它在我们的生产服务器上以低影响模式全时运行,以便我们可以在必要时获取快照,并在开发的所有阶段使用它。

答案 4 :(得分:0)

我对NetBeans内置的分析器有很好的经验。

VisualVM中的分析器是NetBeans分析器的精简版本。