【问题标题】:Tomcat should abort stuck upload threadsTomcat 应该中止卡住的上传线程
【发布时间】:2016-05-12 13:18:25
【问题描述】:

我检查了 Tomcat 的文档,但没有找到任何配置选项:让我们简化 Tomcat HTTP 线程可以具有的状态数量:就绪、连接、服务、完成

在没有流量的情况下,所有的 http-threads 都会有 status=ready。 如果有客户端请求,状态会切换到正在连接,然后切换到服务。如果所有字节都可以传递给客户端,那么最后会有一个简短的 Finishing 状态。之后,线程切换回就绪状态,为新请求做好准备。

如果上传(处于服务状态)卡住了,我的意思是在 10 秒内没有发送单个字节,我可以告诉 Tomcat 中止这些线程吗?

我没有找到这样做的选项。 有什么提示吗?

【问题讨论】:

    标签: tomcat tomcat7


    【解决方案1】:

    有两种配置选项:

    • 连接超时:

    此连接器在接受连接后将等待显示请求 URI 行的毫秒数。使用值 -1 表示没有(即无限)超时。默认值为 60000(即 60 秒),但请注意,Tomcat 附带的标准 server.xml 将其设置为 20000(即 20 秒)。除非 disableUploadTimeout 设置为 false,否则在读取请求正文(如果有)时也会使用此超时。

    • 连接上传超时

    指定在数据上传过程中使用的超时时间(以毫秒为单位)。这仅在 disableUploadTimeout 设置为 false 时生效。

    • keepAliveTimeout

    此连接器在关闭连接之前等待另一个 HTTP 请求的毫秒数。默认值是使用已为 connectionTimeout 属性设置的值。使用值 -1 表示没有(即无限)超时。

    来源:https://tomcat.apache.org/tomcat-7.0-doc/config/http.html

    如果您想在写入客户端时防止阻塞,那么您应该使用异步 servlet 并将写入操作封装在 Hystrix 命令中。

    【讨论】:

    • 是的,我知道这两个。但这些都不是我要找的。我正在寻找一个仅中止 STUCK 连接的选项,其中实际上没有传输字节但连接保持活动状态(出于某种未知原因)。
    • 感谢keepAliveTimeout,该参数是否也适用于尚未完成但卡住的响应?
    • 你对“卡住”的理解是什么?
    • 卡住 = 套接字已打开但未传输任何字节
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-14
    相关资源
    最近更新 更多