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

Posted

技术标签:

【中文标题】Web/J2EE 和客户端应用程序的端到端分析【英文标题】:End to end profiling of web/J2EE and client applications 【发布时间】:2011-09-23 14:31:48 【问题描述】:

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

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

【问题讨论】:

您使用的是哪个应用服务器? 你用的是什么客户端?您希望分析代理在远程客户端和服务器上运行,还是在同一台机器上运行? 这将是一个我有来源的自定义客户端。 我的意思是,它是用 Java 编写的客户端,即 J2SE 应用程序,还是 Web 浏览器,还是其他什么?在同一台机器上运行客户端和服务器是否可以接受? 哦,是的,两者之间的网络 [即使它在同一台机器上] 需要与分析信息分开 【参考方案1】:

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

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

但有几点需要注意:

DTrace 并非在所有操作系统中都可用。 目前在 Solaris 10 和 Mac OS Leopard 中可用。 我不知道 Linux 发行版中的 Dtrace 支持,其中SystemTap 是推荐的替代方案。 FreeBSD 有一个实验性的 DTrace 实现。应该注意的是,SystemTap 不是 DTrace for Linux 的实现,而是一个完全不同的实体。 在 MSFT Windows 上,您只能自生自灭,至少目前是这样。 关于 JVM 和客户端的假设(因为我知道服务器在 JVM 上运行) 如果您的客户端是 JVM,那么您必须使用内置了 DTrace 检测或等效(我指的是 SystemTap)的 JVM,否则您的 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。例如,DTrace 检测的 Firefox 在 Solaris 10 上可用,并且可能在 Solaris Express 11 上可用(我已验证仅在 OpenSolaris 2009.06 上支持 DTrace)。很多 Linux 发行版都没有在 Firefox 中添加 SystemTap 探针,因此您通常需要从源代码构建 Firefox,并在 Firefox 构建脚本中使用适当的标志来添加探针;我以前对这个过程的经验让我相信这是可行的,但并不容易。如果您正在运行不同的应用程序(既不是 Firefox,也不是 JVM)作为客户端,那么您需要验证对它的 DTrace/SystemTap 支持。 编写好的 DTrace/SystemTap 脚本来收集分析信息并不容易。您需要学习另一种语言,并且需要确保脚本不会增加自己的开销(并在分析的上下文中验证海森堡不确定性原则)。

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

【讨论】:

【参考方案2】:

自 8.0 版起,JProfiler 能够跟踪两个已配置 JVM 之间的 RMI、Web 服务和远程 EJB 调用。

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

在远程端,每个调用点分别记录执行点,因此您可以单独检查调用。

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

【讨论】:

以上是关于Web/J2EE 和客户端应用程序的端到端分析的主要内容,如果未能解决你的问题,请参考以下文章

nodejs REST Api的端到端分析

C# 和 typescript 之间 JSON 的端到端类型安全

使用 Flex、.NET 和 DBMS 寻找更好的端到端通信

解析Ceph: 数据的端到端正确性和 Scrub 机制

vue-cli 脚手架基于Nightwatch的端到端测试环境的过程

端到端数据采集的前端架构原理