RestTemplate.exchange 长延迟

Nob*_*ore 5 java rest spring web-services resttemplate

我们的 Spring 应用程序使用 RestTemplate 通过 Exchange() 方法向 Web 服务端点发送 HTTP 1.1 请求。99.8% 的情况下,这工作正常,但在 0.2% 的情况下,这会导致调用restTemplate.exchange() 和我们的负载均衡器记录 HTTP 请求(然后转发)之间的较长(10-180 秒)延迟到网络服务)。RestTemplate 是在没有指定备用 ClientHttpRequestFactory 的参数的情况下初始化的,所以我知道这段代码没有利用连接池,例如通过如下方式初始化它:

restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory())
Run Code Online (Sandbox Code Playgroud)

这是否能从逻辑上解释我所描述的症状,还是我应该继续调查?

这是代码片段,.exchange() 的最后一行在一小部分时间内会产生缓慢的性能。

private <T> ResponseEntity<T> request(String project, 
    String url, 
    HttpMethod method, 
    HttpEntity<String> request, 
    ClientHttpRequestInterceptor moduleInterceptor, 
    ParameterizedTypeReference<T> parameterizedTypeReference) {

    log.info("request(): url - {}", url);
    List<ClientHttpRequestInterceptor> interceptors = new ArrayList<ClientHttpRequestInterceptor>();
    if (moduleInterceptor != null) {
        interceptors.add(moduleInterceptor);
    }
    restTemplate.setInterceptors(interceptors);
    try {
        ResponseEntity<T> response = restTemplate.exchange(url, method, request, parameterizedTypeReference);
Run Code Online (Sandbox Code Playgroud)