当前位置: 首页 > 知识库问答 >
问题:

Spring Webflux Webclient设置连接keepAlive时间

益兴生
2023-03-14

刚开始使用Spring Webflux Webclient,只是想知道Http连接的默认KeepAlive时间是多少?有没有办法增加keepAlive的时间?在我们的Rest服务中,我们可能每五分钟就会收到一个请求,这个请求需要很长的时间来处理,它需要500秒-10秒之间的时间。然而,在负载测试中,如果频繁发送请求,处理时间将小于250ms。

共有1个答案

杨骁
2023-03-14

Spring WebFlux WebClient是一个HTTP客户机API,它封装了实际的HTTP库,因此连接管理、超时等配置可以直接在库级别配置,行为可能会根据所选库而改变。

WebClient的默认库是Reactor Netty。

许多HTTP客户机(Reactor Netty就是这种情况)在连接池中维护HTTP连接以重用它们。客户端通常获取到远程主机的新连接,使用它发送/接收信息,然后将其放回连接池中。这是非常有用的,因为有时获取一个新的连接可能代价很高。在你的情况下,这似乎真的很贵。

大多数客户机尽可能长时间地将这些连接留在池中,并在获取它们之前对它们进行测试,以查看它们是否仍然有效,或者异步监听服务器事件以将它们从池中删除(我相信Reactor Netty会这样做)。因此,最终,服务器处于控制之中,并决定何时关闭不活动的连接。

现在,您的问题描述可能表明,连接到远程主机的成本非常高,但也可能是远程主机需要很长时间来响应您的请求(例如,它可能在空缓存上操作,需要计算很多东西)。

 类似资料:
  • 问题内容: 我正在使用PDO从MySQL服务器获取数据。我注意到的是:如果MySQL服务器不可用,则此代码返回异常 实际上 需要(相对)长的时间: 如果使用MySQL,则发生异常(SQLSTATE [HY000] [2003]无法在…上连接到MySQL服务器)仅需2分钟以上,而在PostgreSQL上则需要30秒(SQLSTATE [08006] [7]超时已过期) )。 我尝试使用PDO ::

  • Hi想知道是否有办法设置套接字的超时,以及在连接握手之前重试的次数。我在非常糟糕的连接模式下测试了我的应用程序,我为我在Volley中的请求设置了重试策略为10秒,但SSL握手似乎是个问题,因为它有一个默认的超时设置为60秒,而Volley超时只被触发当套接字由于尝试次数或超时而失败时。 下面是我的方法: 我正在使用截击来提出我的请求,我实现这一点的方法是: 我还尝试设置了这样的超时:

  • 问题内容: 我正在尝试使用Java设置网络超时我的Oracle数据库连接。但是,我遇到了错误。以下是示例代码及其各自的例外。 我得到的异常是: 我相信这与抽象方法有关(请参见AbstractMethodError)。可能导致此错误的原因是我只实现了我认为已经在Java中定义的方法,因此不拒绝编译。 注意:如果有抽象方法,Java不允许编译具体的类。 问题答案: 是JDBC 4.1中引入的,而JDB

  • 我知道volley有一个重试策略,但我知道,这是针对套接字超时,而不是连接超时,Apache HttpClient有setConnectionTimeout和setSoTimeout方法,有人知道我是否要为volley framework设置连接超时吗。

  • 我得到权限拒绝(公钥)。在Windows 7 x64上 我所做的是: 1)也更新了我的git openSSH 2) 使用ssh keygen生成的密钥-t rsa-b 4096-C“myemail@gmailcom" 3) 把它们命名为“hub”,所以我有hub-hub。酒吧。ssh文件夹 4) 运行ssh代理 5) 运行ssh代理sh-c“ssh add”/hub’it said identit

  • 我们正在进行一个项目,该项目使用JSPlumb进行工作流呈现,并维护一个单独的数据模型,其中包括节点(id、位置、文本等)和连接,使用JSPlumb.bind使其与事件保持同步 当我开始重新创建连接时,我使用源和目标参数调用jsPlumb.connect,但ID似乎是在幕后创建的,因此与从数据模型加载的内容不匹配。这将是好的,除了在我不想删除该连接的ID从模型。。。 有没有办法手动设置连接器的ID