gpt4 book ai didi

java - 分析单个 Web session

转载 作者:行者123 更新时间:2023-11-30 07:03:56 25 4
gpt4 key购买 nike

在 Java 网络应用程序中搜索性能问题时,我想分析(通过采样)单个网络 session 。 Web 应用程序部署在 Java EE 应用程序服务器上(JBoss 或 WLS,因此不可能有 OpenJDK 特定的东西)

使用像 JVisualVM 或 YourKit 这样的传统采样器只能让我一次分析所有正在运行的线程,因此不会揭示与基本负载分离的所述网络 session 的 CPU 使用率,该负载已经在服务器上。部分问题在于,网络 session 和单个线程之间(显然)没有技术联系,即每个请求都可能从应用程序服务器的线程池中获取不同的线程。

我的想法是实现一个采样器,并在每次从服务器收到新请求时注册与观察到的网络 session 关联的线程(在请求完成后立即注销线程)。

第一个问题:您必须手动执行此操作还是已有工具可以为您执行此操作?

第二个问题(因为我没有发现任何问题,并假设这是一个相当具体的问题):最好的方法是什么?

显然,人们会尽量减少分析对应用程序性能的影响。同样显然,因为我需要将(技术)线程信息连接到特定于应用程序的数据(websession-ID),这似乎没什么,可以通过 JVMTI 完成。

保留编写应用内分析器的选项,其中线程通过 Thread.stackTrace 或 ThreadMXBean.getThreadInfo 进行采样。哪个更好?还有其他更好的选择吗?

最佳答案

JProfiler可以为不同的 URL 或查询参数拆分调用树。

enter image description here

如果您可以为此目的修改 URL 或查询参数,那么您将能够将 session 与后台加载分开。例如,您可以添加一个查询参数 profile=true,您只为应该分析的请求传递该参数。

enter image description here

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

关于java - 分析单个 Web session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27982150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com