springboot 运行一段时间之后无法获取到数据库连接问题排查

springboot 运行一段时间之后无法获取到数据库连接,后续排查是2个问题引起

    1. HttpClient 连接池配置连接数太少,而且使用 CloseableHttpClient 后没有关闭 CloseableHttpResponse,导致线程阻塞,事务无法结束,数据库连接没有还给连接池
      response.close();
      
      
        @Bean(name = "httpClientConnectionManager")
          public PoolingHttpClientConnectionManager getHttpClientConnectionManager(){
              PoolingHttpClientConnectionManager httpClientConnectionManager = new PoolingHttpClientConnectionManager();
              httpClientConnectionManager.setMaxTotal(100);
              httpClientConnectionManager.setDefaultMaxPerRoute(100);
              return httpClientConnectionManager;
          }
      
      
    2. 数据库连接数配置没有生效,build的数据源没有读取配置文件
      maximum-pool-size: 50

        @Bean @Primary @ConfigurationProperties(prefix = "spring.datasource") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); }

 

    1. 修改如下,问题解决
      @Bean
          @Primary
          @ConfigurationProperties(prefix = "spring.datasource.hikari")
          public HikariDataSource dataSource(DataSourceProperties properties) {
              HikariDataSource dataSource = properties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
      
              if (StringUtils.hasText(properties.getName())) {
                  dataSource.setPoolName(properties.getName());
              }
              return dataSource;
          }

       

 

posted @ 2020-01-06 18:04  java小胖  阅读(5003)  评论(0编辑  收藏  举报