Spring Boot 4 配置 HikariCP 数据库连接池大小
Spring Boot JDBC PostgreSQL About 1,938 wordsyaml
minimum-idle默认等于maximum-pool-size。
maximum-pool-size默认为10。
所以数据库连接池默认大小是10,且一直保持10个连接。
对于高并发场景,推荐使用固定大小的连接池。
对于管理后台等用户及使用频率不高的系统,推荐将连接的最小空闲数量减少,提供最大连接数量来应对突发的场景(如:批量上传,批量任务等)。
其余超时时间设置可以使用默认设置。
spring:
datasource:
url: jdbc:postgresql://localhost:5432/postgres
driver-class-name: org.postgresql.Driver
username: postgres
password:
hikari:
minimum-idle: 1
maximum-pool-size: 80
注意
corePoolSize
HikariCP没有像Tomcat JDBC那样的corePoolSize核心线程池的概念。
最大连接数
maximum-pool-size不要超过数据库的最大连接限制。
以PostgreSQL为例,可以使用SQL查看最大连接数。
show max_connections;
查看数据库当前连接数。
select count(*) from pg_stat_activity where client_addr = '192.168.1.1';
源码
最大连接池默认是DEFAULT_POOL_SIZE,所以在数据库观测平台经常能看到一直有10个连接。
当没有设置minIdle时,构造HikariConfig对象时会默认将minIdle设置为-1。
在获取连接时,会再次将minIdle设置为maxPoolSize的大小。
public class HikariConfig implements HikariConfigMXBean {
private static final int DEFAULT_POOL_SIZE = 10;
private volatile int maxPoolSize;
private volatile int minIdle;
public HikariConfig() {
minIdle = -1;
maxPoolSize = DEFAULT_POOL_SIZE;
}
private void validateNumerics() {
// ...
if (minIdle < 0 || minIdle > maxPoolSize) {
minIdle = maxPoolSize;
}
}
public void validate() {
// ...
validateNumerics();
}
}
getConnection获取数据库连接时,会调用HikariConfig的validate方法。
public class HikariDataSource extends HikariConfig implements DataSource, Closeable {
@Override
public Connection getConnection() throws SQLException {
// See http://en.wikipedia.org/wiki/Double-checked_locking#Usage_in_Java
HikariPool result = pool;
if (result == null) {
synchronized (this) {
result = pool;
if (result == null) {
// HikariConfig 的 validate 方法
validate();
}
}
}
}
}
文档
Views: 7 · Posted: 2026-02-04
———         Thanks for Reading         ———
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...