【问题标题】:Apache Tomcat will close connection on file download with non blocking http protocolApache Tomcat 将使用非阻塞 http 协议关闭文件下载连接
【发布时间】:2015-11-03 22:55:06
【问题描述】:

默认情况下,server.xml 中的协议配置为 protocol="HTTP/1.1"。 对于较新的 tomcat 版本,如果可能,这将使用非阻塞协议。

问题: 使用默认设置设置 Tomcat (8.0.28)。 在 webapp 中复制文件,例如webapps/root 并以有限的速度下载文件以模拟慢速调制解调器下载。

wget http://xxx.xxx.xxx.xxx:8080/xxxxxxx/7.zip --limit-rate=1k

连接将在 6 分 24 秒后关闭

Saving to: ‘7.zip’
7.zip               0%[                      ] 767.99K  1.00KB/s   in 6m 24s
2015-10-28 17:27:39 (1024 B/s) - Connection closed at byte 786426. Retrying.

如果我将协议更改为(阻塞):

  protocol="org.apache.coyote.http11.Http11Protocol"

一切都很好,下载会以缓慢的速度完成。

可能是什么问题?

【问题讨论】:

  • 经过一番调查,它与速度有关。如果我将其更改为 10kb/秒,它似乎可以工作。如果我使用 5kb/sec,它总是会在 77 秒或 102 秒后停止。我仍然没有看到任何模式。

标签: java tomcat


【解决方案1】:

这是新 apache 协议的一个已知限制。

在 64kb/秒以下获得稳定连接的唯一解决方案是更改设置: socket.txBufSize(更小) 和连接超时(更高)。 有关更多详细信息,请检查: https://bz.apache.org/bugzilla/show_bug.cgi?id=58565

【讨论】:

    猜你喜欢
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2010-12-30
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多