2011-04-13 66 views
3

我们正在研究一个初步使用Struts2 + Spring 3.x + Hibernate 3.x的Web应用程序。我们正在考虑使用良好的剖析工具来避免任何潜在问题。基于Java的Web应用程序的剖析工具

我是新来的这方面如此,在做一些研究,想出了这两个候选

  • 的JProfiler
  • VisualVM的

请提供有关这两个您的意见或是否有任何其他好的候选人请建议。 我也有几个关于这方面的疑问。

  1. 由于项目仍处于中间位置,因此使用Profiler有多相关。
  2. 因为我们将使用这个最初在 开发系统,所以我不 认为这是生产 的副本,可能会有很多问题,其中 只是超出范围的生产。
  3. 多少操作系统可以使分析结果,因为大部分 开发机将基于而分期和 产量将基于Linux的窗口 差异 。

请提供宝贵意见。

回答

3

去JProfiler。我已经使用了3年,特别是对于CPU性能分析,它确实非常棒。 VisualVM不提供JProfile所做的那种深入研究。它可以识别J2EE组件,并且可以为流提供准确的SQL。根据我的经验,这非常重要,95%的性能问题来自于不负责任和不必要的DB命中。

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

为了回答您的其他问题,

  1. 不要紧,在什么阶段你的项目,如果你觉得这是不是表现良好,分析是与您有关。不要推迟它,因为如果问题出现在核心组件的设计中,它有可能在整个应用程序中传播,并且很难在后续阶段修复它。

  2. duffymo的回答。

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

+0

+1 Adi的宝贵意见 – 2011-04-14 04:22:15

0

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

以下是答复你的问题:

有关如何使用分析器作为该项目仍处于中间位置。

我不确定你在这里是什么意思。我会假设你在质问探测器对性能的负面影响。您正在检查相对效果,而不是绝对数字。您的基准绩效,进行更改并重新衡量。 Profiler对于两者都是相同的。

因为我们将使用这个最初在 开发系统,所以我不 认为这是生产 的副本,可能会有很多问题,这些问题 刚刚走出的范围以生产。

您只会了解您测量的系统。如果开发与生产不同,你能做的最好的是变化的相对效应,而不是绝对值。

多少操作系统可以使 分析结果,因为大多数 开发机的差别将同时登台和生产 将基于Linux窗口 。

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

0

如果您使用Eclipse,并从Eclipse启动您的开发服务器,则需要锁定在Eclipse TPTP

+0

@TPTP可能是一个不错的选择,但它有一个复杂的设置循环,因为我在大多数论坛和articles..i的阅读一定会喜欢花更多的时间在分析比设置系统 – 2011-04-13 15:25:50

+0

@umesh awasthi :我无法将它与其他工具进行比较,当我记得对的时候,这不是一个问题。 (1年前) – Ralph 2011-04-13 15:36:04

+0

我说的只是我真诚地读了我没有使用它我自己。将尽我所能 – 2011-04-13 15:47:38

0

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

对于我们所有的分析需求,我们使用Yourkit(http://www.yourkit.com/)。我们通常不会做很多分析工作来识别瓶颈等等(尽管我们已经做了一些),但是它被证明是一个用于发现死锁,内存泄漏,性能问题等的好工具。

我们有它在全天候的生产服务器上以低影响的模式运行,因此我们可以在必要时获得快照,并且已经在所有开发阶段使用它。

0

我对内置于NetBeans中的剖析器有非常好的经验。

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

相关问题