Tomcat-有没有办法喷出尚未响应的当前/活动请求?

时间:2019-01-04 13:42:46

标签: java performance tomcat web-applications

我很难调试响应时间较长的问题。我的Web应用程序有时需要很长时间才能做出响应,而我很难确定具体的请求是罪魁祸首。我遇到的麻烦是,tomcat仅在响应请求后才记录访问日志。我想知道是否有一种方法可以记录所有传入的请求(不等待响应),或者告诉tomcat发出当前正在处理的所有请求(类似于jstack,但是向我显示线程向我显示当前/活动请求的网址)?

1 个答案:

答案 0 :(得分:1)

服务后,可以通过使用花费时间令牌激活Extended Log Valve来识别缓慢的请求。正如您想实时看到的那样,这不是您的真正问题,但尚不清楚您是否已经确定长时间响应请求。

VisualVM显示正在运行的线程,但这不足以了解正在发生的事情。可能您再次需要使用 x-threadname 令牌激活扩展日志阀,以与您在VisualVM中看到的进行比较。但是对于调试本身而言,上面的解决方案(耗时的令牌)通常就足够了。

但是,仅通过应用程序实际上根本没有问题(这似乎是一个随机问题),识别瓶颈就不够了。应用程序是否使用数据库?如果是这样,请例如使用MySQL激活慢查询日志。它是否使用其他任何层(身份验证,NFS / CIFS等)?如果是这样,您需要监视它们的可用性,以防它们在不可用时阻塞任何内容。