Наше приложение Spring использует RestTemplate для отправки запросов HTTP 1.1 к конечным точкам веб-служб с помощью метода exchange (). В 99,8% случаев это работает нормально, но в 0,2% случаев это приводит к длительной (10-180 секунд) задержке между вызовом restTemplate.exchange () и тем, когда наш балансировщик нагрузки регистрирует HTTP-запрос (который затем пересылается). к веб-сервису). RestTemplate инициализируется без аргумента, указывающего альтернативный ClientHttpRequestFactory, поэтому я знаю, что этот код не использует преимущества пула соединений, например инициализируя его следующим образом:
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);




Вы нашли решение этого?