有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Tomcat有没有一种方法可以输出当前/活动的尚未响应的请求?

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


共 (1) 个答案

  1. # 1 楼答案

    一旦服务完成,就可以通过使用花费的令牌激活Extended Log Valve来识别慢速请求。这不是您真正的问题,因为您希望实时看到,但不清楚您是否已经确定响应请求的时间过长

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

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