代码之家  ›  专栏  ›  技术社区  ›  Maurice

当服务器端进程花费太长时间发送响应时,tomcat请求连接是否也会超时?

  •  0
  • Maurice  · 技术社区  · 4 年前

    我有一个带有嵌入式tomcat服务器的spring引导应用程序。为了限制DOS攻击的影响,我设置了 server.tomcat.connection-timeout 到3秒。A. connectionTimeout 时间限制是指 server will automatically close the connection with the client .

    因此,在我的情况下,如果客户端完成请求需要3秒钟以上,连接将自动超时。然而,当服务器端的进程导致延迟时,我还不清楚到底会发生什么。

    举个例子,我的web应用程序使用一个hikari连接池来管理到数据库的连接。它最多可以有10个数据库连接。如果所有10个都在使用中,任何传入的请求都必须等待其中一个数据库连接可用。如果等待时间超过3秒,tomcat连接会超时吗?或者,由于延迟不是由客户端引起的,连接是否仍然可用?

    1 回复  |  直到 4 年前
        1
  •  0
  •   Stephen C    4 年前

    根据 Tomcat 9.0 documentation 这个 connection-timeout 是:

    此连接器在接受连接后等待请求URI行显示的毫秒数。[...] 除非 disableUploadTimeout 设置为 false ,读取请求正文(如果有)时也将使用此超时。

    这是客户端发送请求所用的时间。这是 无关的 服务器响应请求所需的时间。

    所以

    如果等待时间超过3秒,tomcat连接会超时吗?

    不,不会的 1. .事实上,Tomcat似乎对(同步)请求完成所需的时间没有任何限制。

    当然,如果服务器占用的时间太长,客户端可能会使请求超时。服务器不太可能注意到这一点,从而放弃请求。


    1-假设文件准确无误。但是,该配置选项已经出现在许多Tomcat版本中,具有相同的描述。如果文档有误,这肯定会被注意到、报告和修复。