如何解决如果对HTTP持久连接的请求花费很长时间,客户端会超时吗?
如果我们具有HTTP持久连接,但是其中一个请求会花费很长时间(例如30秒)。 假设客户端的超时时间为15秒。
-
在持久连接上使用客户端的请求超时是否得到尊重?
-
如果是,则连接断开吗?
-
有什么方法可以避免整个连接中断,而只是在一个特定请求上超时?
解决方法
- 客户端可以指定超时,但是它取决于使用客户端超时的服务器配置还是它自己的超时配置。默认情况下,服务器端超时配置比客户端超时配置具有更高的优先级。
- 否
- 对于具有不同超时配置的一个特定请求,不可能在同一连接上进行,但是,您可以声明不同的http客户端配置连接,并将其中一个用作默认值,将另一个用于需要更多超时值的请求,但是它们是
注意,在客户端超时配置中,我们有两种不同类型的超时
1-打开连接超时2-读取响应超时。
声明第一个用于服务器和客户端之间的开放连接,第二个声明用于客户端需要多少时间来响应其请求。
这取决于您正在使用的客户端以及服务器的配置方式。问题更加复杂...在keep-alive
中设置http
不会避免传输级的tcp
超时,您需要将tcp
超时设置为keep-alive
同样,但是服务器可能不希望为您保留连接,只要您愿意。对于持久连接,最好使用udp
而不是tcp
-它没有如此严格的流控制。另一件事是HTTP/2
根本没有keep-alive
这样的东西,因为事物的处理方式与HTTP/1
完全不同。
8.1.2.2。特定于连接的标题字段
HTTP / 2不使用Connection标头字段指示
特定于连接的头字段;在此协议中,connection-
特定的元数据通过其他方式传达。端点不得
生成包含特定于连接头的HTTP / 2消息
领域任何包含特定于连接头域的消息必须 被视为畸形(见第8.1.2.6节)。唯一的例外是TE标头字段,该字段可能是
存在于HTTP / 2请求中;如果是,则不得包含任何
而不是“预告片”的价值。这意味着中介将HTTP / 1.x消息转换为 HTTP / 2将需要删除
指定的所有标头字段 连接头字段,以及连接头字段
本身。这些中介也应该删除其他连接-
特定的标头字段,例如“保持活动”,“代理连接”,
传输编码和升级,即使它们不是由 连接头字段。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。