刚刚开始使用,只是想知道Http连接的默认KeepAlive时间是多少?有增加keepAlive时间的方法吗?在我们的Rest服务中,我们可能每5分钟收到一个请求,处理.It需要很长时间,时间在500秒-10秒之间。然而,在负载测试中,如果我发送频繁的请求,处理时间少于250 is。
发布于 2018-11-09 20:07:55
Spring WebClient是一个HTTP,它封装了实际的HTTP库--因此连接管理、超时等配置直接在库级别进行配置,并且行为可能会根据所选库的不同而改变。
WebClient的默认库是反应堆Netty。
许多HTTP客户端(反应堆Netty就是这种情况)在连接池中维护HTTP连接以重用它们。客户端通常获得到远程主机的新连接,使用它发送/接收信息,然后将其放入连接池中。这是非常有用的,因为有时获得一个新的连接可能是昂贵的。在你的情况下这似乎是非常昂贵的。
HTTP客户端将那些未使用的连接保留在池中,但是keepAlive时间呢?
大多数客户端尽可能长时间地将这些连接留在池中,并在获取它们之前对它们进行测试,以确定它们是否仍然有效,或者异步地侦听服务器事件以将它们从池中删除(我相信反应堆Netty会这样做)。因此,最终,服务器是控制的,并决定何时关闭连接,如果它们是不活动的。
现在,您的问题描述可能表明,连接到远程主机非常昂贵,但它也可能是远程主机,需要很长时间才能响应您的请求(例如,它可能运行在一个空缓存上,需要计算很多事情)。
https://stackoverflow.com/questions/53230557
复制相似问题