PoolingHttpClientConnectionManager setMaxTotal或setDefaultMaxPerRoute似乎不起作用

时间:2018-10-24 15:06:04

标签: java spring spring-boot apache-httpclient-4.x

在Spring Boot应用程序中,我正在使用PoolingHttpClientConnectonManager创建连接池,如下所示:

      @Bean
      public PoolingHttpClientConnectionManager createCM() {
        PoolingHttpClientConnectionManager pcm = new PoolingHttpClientConnectionManager();
        poolingHttpClientConnectionManager.setMaxTotal(100);
        poolingHttpClientConnectionManager.setDefaultMaxPerRoute(100);
        return pcm;
      }

由于只有一条路由,因此我将setMaxTotal和setDefaultMaxPerRoute的值保持不变。

基本的httpClient配置如下:

      @Bean
      public CloseableHttpClient createHttpClient(PoolingHttpClientConnectionManager pcm, RequestConfig rc) {

          CloseableHttpClient httpClient = HttpClientBuilder
          .create()
          .setConnectionManager(pcm)
          .setDefaultRequestConfig(rc)
          .build();
        return httpClient;
      }

现在的问题是,当我在非常重的负载下对应用程序进行压力测试以查看连接池的行为时,我看不到预期的结果。 我使用jConsole监视应用程序的线程,每次我仅看到2个处于可运行状态的连接池线程,即https-jsse-nio-80-ClientPoller-1和https-jsse-nio-80-ClientPoller-2。

我假设在每秒1500个请求量级的重负载下,它应该通过池中的2个以上(默认)连接来完成此任务。想知道出了什么问题或者我的配置不正确。

0 个答案:

没有答案