【问题标题】:How Spring - server.connection-timeout will work internally?Spring - server.connection-timeout 如何在内部工作?
【发布时间】:2020-12-11 03:37:13
【问题描述】:

我对 server.connection-timeout 属性在 Spring Boot REST API 项目中的工作方式有点困惑

我有一个 Spring boot REST API 项目,其中我有一个删除 REST API,这基本上会对数据库表执行几个删除操作,例如这个删除 API 将删除 3 个表上的一些行,如下所示

删除 API 获取“客户 ID”作为输入并执行以下操作

  1. 删除与表 A 中客户 ID 匹配的所有记录(删除对外部数据库的调用)
  2. 删除与表 B 中客户 ID 匹配的所有记录(删除对外部数据库的调用)
  3. 删除与表 C 中客户 ID 匹配的所有记录(删除对外部数据库的调用)

我的问题是,如果我将“server.connection-timeout”设置为 5 秒,这实际上意味着什么?

我有 2 两个假设

  1. 删除 Rest Api 将在 5 秒内超时,这意味着所有 3 个外部数据库调用必须在 5 秒内完成,否则 REST API 将超时
  2. 每个外部数据库调用都会有 5 秒超时,在这种情况下总共是 15 秒

在最坏的情况下,如果所有 3 个外部数据库调用都需要 4 秒,那么删除 API 将需要 12 秒来响应 - 这是有效的吗?

【问题讨论】:

    标签: spring database spring-boot tomcat connection-timeout


    【解决方案1】:

    我认为你很困惑。 server.connection-timeout – 连接器在关闭连接之前等待另一个 HTTP 请求的时间。

    完成请求所需的时间并不重要。 在您的情况下,如果 server.connection-timeout 为 5,这不会影响您提到的 #1 #2 或 #3 删除。

    简单来说,连接超时不适用于长时间运行的请求。相反,它适用于初始连接,当服务器等待客户端请求某些东西时。

    默认值:使用连接器的容器特定默认值。使用值 -1 表示无限超时。

    【讨论】:

    • 有没有办法为其中一个控制器设置特定的超时时间?我的意思是这个 server.connection-timeout 应该适用于所有端点,我需要为特定端点指定一个新的超时
    猜你喜欢
    • 2018-12-06
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 2016-09-11
    • 1970-01-01
    • 2023-03-25
    • 2020-09-10
    相关资源
    最近更新 更多