【发布时间】:2020-01-05 10:47:07
【问题描述】:
我们使用 PgBouncer 作为我们基于 spring 的应用程序的连接池的中间件。在应用程序中,我们使用 HikariCP 进行应用程序级连接池。
我们已将 HikariCP 的 maxLifeTime 值设置为一小时,并将 idleTimeOut 设置为 30 秒。
我观察到,当应用在长时间空闲后收到请求时,我们会收到此错误:
Caused by: org.postgresql.util.PSQLException: Connection attempt timed out. at
org.postgresql.Driver$ConnectThread.getResult(Driver.java:376) at
org.postgresql.Driver.connect(Driver.java:288) at
java.sql.DriverManager.getConnection(DriverManager.java:664) at
java.sql.DriverManager.getConnection(DriverManager.java:247) at
org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:88) at
org.postgresql.ds.common.BaseDataSource.getConnection(BaseDataSource.java:71) at
com.zaxxer.hikari.pool.HikariPool.addConnection(HikariPool.java:398) at
com.zaxxer.hikari.pool.HikariPool.lambda$addBagItem$2(HikariPool.java:309) at
【问题讨论】:
-
为什么不只使用一个连接池 Hikari / PgBouncer ?
-
HikariCP 已经是应用程序的一部分,DevOps 团队后来添加了 PgBouncer。我也不清楚 PgBouncer 是否会让 Hikari 共享连接。
标签: java spring hibernate hikaricp pgbouncer