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

Will a tomcat request connection also time out when a server side process is taking too long to send a response?

我有一个带有嵌入式 tomcat 服务器的 spring 启动应用程序。为了限制 DOS 攻击的影响,我将 属性 server.tomcat.connection-timeout 设置为 3 秒。 connectionTimeout.

之后的时间限制

因此,如果在我的情况下客户端需要超过 3 秒来完成请求,连接将自动超时。但是,我还不清楚究竟发生了什么,而是服务器端的一个进程导致了延迟。

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

谢谢

根据Tomcat 9.0 documentationconnection-timeout是:

The number of milliseconds this Connector will wait, after accepting a connection, for the request URI line to be presented. [...] Unless disableUploadTimeout is set to false, this timeout will also be used when reading the request body (if any).

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

所以...

If this wait takes more then 3 seconds, will the tomcat connection time out?

不,不会1。事实上,Tomcat 似乎对(同步)请求可能需要多长时间才能完成没有任何限制。

当然,如果服务器花费的时间太长,客户端可以使请求超时。服务器不太可能会注意到这一点,因此它可以放弃请求。


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