【问题标题】:How can I debug tomcat request threads?如何调试tomcat请求线程?
【发布时间】:2012-04-18 18:16:28
【问题描述】:

我有一个 Tomcat 应用程序正在运行,由于某种原因,我的一个 servlet 被搁置,而所有其他 servlet 在执行请求时响应。

我的 Tomcat 连接器配置:

<Connector port="8008" protocol="HTTP/1.1"
maxThreads="50" minSpareThreads="5" maxSpareThreads="50"
    enableLookups="false" acceptCount="100"
           connectionTimeout="20000" 
           redirectPort="8443"
           compression="off"
           allowTrace="true"
compressionMinSize="128"
 noCompressionUserAgents="gozilla, traviata"
 compressableMimeType="text/html,text/xml,text/x-gwt-rpc; charset=utf-8,application/json; charset=utf-8,application/javascript" />

在执行很长的请求时,我的 GWT RPC servlet 不断响应。但是我在 GWT 之外创建了一个 servlet(即一个普通的旧 servlet),当我向这个 servlet 发送请求时,它不会响应,直到长 GWT 请求结束。它实际上根本没有开始执行(我添加了日志以查看它是否真正开始执行,直到日志 gwt 请求结束才开始执行)。

如何调试Tomcat实例的线程池/入站请求队列?

【问题讨论】:

  • 您是否使用 IDE,例如 Eclipse 或 NetBeans?如果是这样,您可以在打开调试的情况下启动 Tomcat,然后远程附加并在任何您想要的地方设置断点。您还需要拥有 Tomcat 源。但是,如果您没有远程调试经验,那么如何设置它可能超出了 SO 答案。
  • 在非 gwt servlet 请求等待查看它在做什么时执行线程转储。
  • 听从吉姆·加里森的建议。这是正确和通常的方式。做起来不是什么难事。 Jim 应该将他的评论作为答案,然后您可以选择它作为答案。

标签: gwt tomcat


【解决方案1】:

查看您的 IDE 调试设置。

例如,在 IntelliJ IDEA 上,您需要将 breakpoint settings 中的 Suspend policy 更改为 Thread。这意味着只有这个因断点而停止的线程会阻塞,其他线程会继续正常运行。

【讨论】:

    猜你喜欢
    • 2011-08-03
    • 2012-06-14
    • 2013-05-30
    • 2020-01-12
    • 2013-08-27
    • 2014-11-16
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多