我们正在开发一个使用Struts2 + Spring 3.x + Hibernate 3.x的Web应用程序。我们正在考虑使用良好的分析工具来避免任何潜在的问题。
我是这个领域的新手,所以在进行一些研究时想出了这两个候选人
请提供您对这两个的反馈,或者如果有其他好的候选人请提出建议。 我对此也有更多疑问。
请提供宝贵的意见。
答案 0 :(得分:3)
使用JProfiler。我使用它已经3年了,特别是对于CPU分析来说真的很棒。 VisualVM不提供JProfile所做的那种深入分析。它识别J2EE组件,并为您提供在流中触发的精确SQL。这非常重要,根据我的经验,95%的性能问题来自于不负责任和不必要的数据库命中。
因为您正在使用Hibernate,所以分析将帮助您确定何时启用延迟加载以及何时启用对象,查询和关联缓存。
要回答您的其他问题,
在您的项目处于什么阶段并不重要,如果您觉得效果不佳,则分析与您相关。不要拖延它,因为如果问题出在核心组件的设计中,它可能会在整个应用程序中传播,并且很难在后期阶段进行修复。
duffymo的回答。
很多不同。我们的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分析器的精简版本。