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;
          }

       

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM