【问题标题】:RestTemplate. How to increase max tcp connections?休息模板。如何增加最大 tcp 连接数?
【发布时间】:2020-09-01 10:30:12
【问题描述】:

我有 RestTemplate:

@Bean(name = "restTemplateBean")
public RestTemplate restTemplate(RestTemplateBuilder builder) {
    return builder
            .interceptors(new HttpRequestInterceptor())
            .uriTemplateHandler(new DefaultUriBuilderFactory((host + ":" + port)))
            .build();
}

当我多次调用 RestTemplate(例如发布请求)时,它最多会创建 5 ~ 10 个 TCP 连接。如何增加 RestTemplate 创建的最大连接数?

【问题讨论】:

  • 我不确定,但我认为TCP 连接的数量是JVM 参数。

标签: java spring connection-pooling resttemplate


【解决方案1】:

您可以利用 Apache 的 HttpClient 的连接池。使用 HttpClientBuilder 并增加 maxConnPerRoutemaxConnTotal 以达到您正在寻找的性能:

@Bean
public HttpClientBuilder httpClientBuilder() {
    return HttpClients.custom()
            .setMaxConnPerRoute(PER_ROUTE)
            .setMaxConnTotal(TOTAL);
}

@Bean
public RestTemplate restTemplate(HttpClientBuilder httpClientBuilder) {
    HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();

    requestFactory.setHttpClient(httpClientBuilder.build());
    
    return new RestTemplate(requestFactory);
}

maxConnPerRoute 限制了单个 IP:port 可以建立的连接数,而 maxTotal 限制了可以打开的总连接数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-29
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    相关资源
    最近更新 更多