我在 Spring Boot 应用程序中使用了 Hikari Cp。
这是我的java配置文件:-
private DataSource buildDataSource(String objectValue) {
HikariDataSource dataSource = new HikariDataSource();
JSONObject obj = new JSONObject(objectValue);
dataSource.setInitializationFailTimeout(0);
dataSource.setMaximumPoolSize(5);
dataSource.setIdleTimeout(10000);
dataSource.setMaxLifetime(45000);
dataSource.setDataSourceClassName(obj.getString("dataSourceClassName"));
dataSource.addDataSourceProperty("url", obj.getString("url"));
dataSource.addDataSourceProperty("user", obj.getString("user"));
dataSource.addDataSourceProperty("password", obj.getString("password"));
return dataSource;
}
当我启动应用程序并发送第一个请求后,我收到以下日志。
Added connection org.postgresql.jdbc.PgConnection@66c15b95
2021-07-30 12:00:02.788 INFO 17844 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
2021-07-30 12:00:02.897 DEBUG 17844 --- [l-1 housekeeper] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Pool stats (total=1, active=0, idle=1, waiting=0)
几秒钟后,它立即将接下来的四个连接添加到空闲状态:-
Added connection org.postgresql.jdbc.PgConnection@6b9dc322
Added connection org.postgresql.jdbc.PgConnection@6b9dc322
Added connection org.postgresql.jdbc.PgConnection@6b9dc322
Added connection org.postgresql.jdbc.PgConnection@6b9dc322
After adding stats (total=5, active=0, idle=5, waiting=0)
我的问题是,我只发送了一个请求,为什么 hikira 还要添加 4 个额外的连接 并且已经是一个空闲的连接为什么不能重用同一个连接。
并且我已经为每个连接提供了 maxLiftTime
条件,并且在经过 maxLiftTime 后,连接仍处于空闲状态。
所以任何建议都会有所帮助..
答案 0 :(得分:1)
?minimumIdle:该属性控制HikariCP尝试在池中维护的最小空闲连接数。如果空闲连接低于此值并且池中的总连接数小于 maximumPoolSize,HikariCP 将尽最大努力快速有效地添加额外的连接。但是,为了获得最高性能和对峰值需求的响应,我们建议不要设置此值,而是允许 HikariCP 充当固定大小的连接池。 默认值:与maximumPoolSize 相同
它使用您指定的最大池大小作为最小空闲连接。如果您根本不想要任何空闲连接,请将此值设置为 0