我们的Spring应用程序使用RestTemplate通过exchange()方法将HTTP 1.1请求发送到Web服务端点。 99.8%的时间工作正常,但在0.2%的情况下,这会导致调用restTemplate.exchange()和我们的负载均衡器记录HTTP请求(然后转发)之间的延迟(10-180秒)到网络服务)。在没有指定备用ClientHttpRequestFactory的参数的情况下初始化restTemplate,所以我知道这段代码没有利用连接池,例如通过初始化它如下:
restTemplate = new RestTemplate(new HttpComponentsClientHttpRequestFactory())
这是否在逻辑上解释了我所描述的症状,还是应该继续调查?
这是代码片段,.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);