Web / J2EE和客户端应用程序的端到端概要分析

时间:2011-09-23 14:31:49

标签: java performance java-ee profiling

是否有一个很好的工具可以对使用J2EE并拥有客户端的系统进行端到端的分析?

我意识到您可以轻松地分别对服务器和客户端进行分析。但是,我不知道有哪些工具可以为您提供有关两者之间网络连接的影响以及它们如何影响其性能的信息。 [端到端的分析器,会考虑应用程序何时停止通信以及何时处理]

2 个答案:

答案 0 :(得分:2)

我不知道任何配置文件代理提供开箱即用的功能来端到端地分析应用程序。至少,在写这篇文章时不是。

但是,您可以考虑使用DTrace同时从客户端和服务器收集分析信息(不一定是典型分析器提供的所有信息)。有关如何在Java Web应用程序中使用它的示例(以Firefox作为客户端,Tomcat作为服务器)可在this article中找到。诀窍在于将DTrace检测内置到JVM(运行服务器)和客户端,并编写DTrace脚本,将收集的信息从跟踪写入可解析的输出。因为,问题不清楚客户端是否是Java,我假设客户端也是Java;如果没有,应用程序/可执行文件必须支持DTrace检测。

但有几点需要注意:

  • DTrace并非在所有操作系统中都可用。
    • 目前在Solaris 10和Mac OS Leopard中可用。
    • 我不知道Linux发行版中的Dtrace支持,其中SystemTap是推荐的替代方案。 FreeBSD有一个DTrace的实验性实现。应该注意的是,SystemTap不是Linux的DTrace实现,而是一个完全不同的实体。
    • 在MSFT Windows上,至少你可以自己照顾自己。
  • 关于JVM和客户端的假设(因为我知道服务器在JVM上运行)
    • 如果您的客户端是JVM,那么您必须使用内置于其中的具有DTrace工具或等效工具的JVM(我在这里指的是SystemTap),否则您的DTrace / SystemTap脚本将无法工作。这意味着除非您的发行版的JRE / JDK的作者添加了支持DTrace / SystemTap的代码,否则您将被限制使用内置此类支持的JVM。如果它在您的上下文中很重要,OpenJDK 1.6 .0似乎具有SystemTap的工具支持,Solaris的Oracle / Sun Java 6发行版支持DTrace。在Solaris上的Java 1.4和5上,您需要安装JVMTI代理。
    • 如果您的客户端是Web浏览器或使用其他语言编写的胖客户端,则必须确保其运行的进程可以支持DTrace。例如,可以在Solaris 10上使用DTrace检测的Firefox,并且可能在Solaris Express 11上(我已经在OpenSolaris 2009.06上验证了DTrace支持)。 Firefox中没有为许多Linux发行版添加SystemTap探测器,因此您经常需要从源代码构建Firefox,并在Firefox构建脚本中添加适当的标志来添加探测器;我以前对这个过程的经验让我相信这是可行的,但并不容易。如果您正在运行不同的应用程序(无论是Firefox还是JVM)作为客户端,那么您需要验证DTrace / SystemTap对它的支持。
  • 编写好的DTrace / SystemTap脚本来收集分析信息并不容易。您需要学习另一种语言,并且您需要确保脚本不会增加自己的开销(并在分析的上下文中验证海森堡不确定性原则)。

您当然可以编写在远程客户端和服务器上运行的DTrace / SystemTap脚本,但不建议将收集的检测数据写入套接字(以避免上述开销)。

答案 1 :(得分:1)

从8.0版开始,JProfiler能够跟踪两个配置文件JVM之间的RMI,Web服务和远程EJB调用。

在进行调用的JVM中,调用站点具有超链接,可以将您带到远程JVM中的执行站点:

enter image description here

在远程端,每个呼叫站点都会单独记录执行站点,因此您可以单独检查呼叫。

enter image description here

免责声明:我公司开发JProfiler。