Hikari 连接池 postgres
Posted
技术标签:
【中文标题】Hikari 连接池 postgres【英文标题】:Hikari connection pool postgres 【发布时间】:2021-10-05 17:40:04 【问题描述】:我在我的 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 过去之后,连接仍然处于空闲状态。
所以任何建议都会有所帮助..
【问题讨论】:
dataSource.setMaximumPoolSize(5);
?
【参考方案1】:
来自Hikary documentation
?minimumIdle:此属性控制 HikariCP 尝试在池中保持的最小空闲连接数。如果空闲连接低于此值并且池中的总连接数小于 maximumPoolSize,HikariCP 将尽最大努力快速有效地添加额外的连接。但是,为了获得最大性能和对峰值需求的响应,我们建议不要设置此值,而是允许 HikariCP 充当固定大小的连接池。 默认值:与 maximumPoolSize 相同
它使用您指定的最大池大小作为 miniminimumIdle 连接。如果您根本不想要任何空闲连接,请将此值设置为 0
【讨论】:
以上是关于Hikari 连接池 postgres的主要内容,如果未能解决你的问题,请参考以下文章