【问题标题】:Tomcat - associate thread to sessionTomcat - 将线程关联到会话
【发布时间】:2024-04-22 02:15:02
【问题描述】:

是否可以确定 Tomcat 中特定线程上哪个会话处于活动状态?

我正在调查一个随机时间达到 100% CPU 利用率的问题。使用 PSI Probe(和 VisualVM),我发现了两个在 HashMap.getEntry() 中出现死锁的 ajp 线程。这将为我提供堆栈跟踪,但我真的很想找出发起请求的会话以及 URL(如果可能的话)。

【问题讨论】:

    标签: tomcat tomcat7


    【解决方案1】:

    就“HttpSession”而言的“会话”可能不会消耗任何资源。很可能您的意思是“请求”而不是“会话”。

    如果是这种情况,您可以添加 System.out.println( Thread.currentThread().getName() );

    如果与访问日志相比,找到 Thread 对应的 URL 应该相对简单。

    【讨论】:

    • 不,我的意思是会话 (jsessionid),而不是请求。 PSI Probe 和 Tomcat 管理器都按应用程序列出这些会话,以及客户端 IP 和时间。这就是我想要达到的。而且我正在使用第三方应用程序,因此我无法添加代码来打印线程名称。我确实发现 PSI Probe 确实显示了活动线程的 URL,所以这让我走到了一半。