【问题标题】:Decrease initial lag in webclient call减少 webclient 调用中的初始延迟
【发布时间】:2021-09-16 01:41:43
【问题描述】:
我目前正在使用 spring-webflux 包的 Webclient 进行同步 REST 调用。
但是第一个请求所用的时间比RestTemplate所用的时间长。
我观察到连续调用所花费的时间要少得多,并且与 RestTemplate 大致相同。
有没有办法减少 Webclient 的初始延迟?
【问题讨论】:
标签:
spring-boot
spring-webflux
reactor-netty
spring-resttemplate
【解决方案1】:
默认情况下,HttpClient 资源的初始化是按需进行的。这意味着第一个请求会占用初始化和加载所需的额外时间:
- 事件循环组
- 主机名解析器
- 本机传输库(使用本机传输时)
- 用于安全的本机库(在 OpenSsl 的情况下)
您可以预加载这些资源 - 检查此documentation
不能预加载的有:
- 主机名解析发生在第一个请求中
- 如果使用连接池(默认) - 第一个请求会建立到 URL 的连接,随后对同一 URL 的请求会重用池中的连接,因此它们会更快。