springboot 运行一段时间之后无法获取到数据库连接,后续排查是2个问题引起
-
HttpClient 连接池配置连接数太少,而且使用 CloseableHttpClient 后没有关闭 CloseableHttpResponse,导致线程阻塞,事务无法结束,数据库连接没有还给连接池
response.close(); @Bean(name = "httpClientConnectionManager") public PoolingHttpClientConnectionManager getHttpClientConnectionManager(){ PoolingHttpClientConnectionManager httpClientConnectionManager = new PoolingHttpClientConnectionManager(); httpClientConnectionManager.setMaxTotal(100); httpClientConnectionManager.setDefaultMaxPerRoute(100); return httpClientConnectionManager; }
- 数据库连接数配置没有生效,build的数据源没有读取配置文件
maximum-pool-size: 50
@Bean @Primary @ConfigurationProperties(prefix = "spring.datasource") public DataSource primaryDataSource() { return DataSourceBuilder.create().build(); }
-
- 修改如下,问题解决
@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; }
- 修改如下,问题解决