我正在使用 Spring Boot 应用程序连接到在 Azure 网络安全组后面运行的远程 Postgresql 服务器(9.2)。
当我将 hikari 属性设置为默认值(意味着 maxLifetime 为 30 mts)时,我经常遇到 Connection Unavailable 异常。在研究中我发现,服务器关闭的连接由于其生命周期而仍然保留在池中,因此为了解决这个问题,我将连接对象的生命周期减少到 5 分钟,池大小为 2。以下是 hikari我设置的属性:
spring.datasource2.hikari.max-lifetime=300000
spring.datasource2.hikari.maximumPoolSize=2
logging.level.com.zaxxer.hikari=TRACE
logging.level.com.zaxxer.hikari.HikariConfig=DEBUG
我只限制了来自 Postgres 的 20 个允许连接,并且它不是由我管理的,我有访问限制。由于 hikari 通过关闭我的 Spring Boot 应用程序中的连接每 5 分钟创建新的两个对象,我看到使用 pg_stat_activity 查询在 Postgres 服务器中轰炸了太多的连接,并且我得到了用户的太多连接。
我尝试在连续尝试中将连接对象的 maxLifeTime 增加到 10、15 和 20 分钟,但我仍然可以看到来自数据库服务器端的更多连接
Hikari 关闭的连接不会在 Postgres 服务器中关闭。Postgres 服务器中连接保持活动或空闲的默认值/时间是多少?我该如何解决这个问题?
或者有没有办法通过 Hikari 关闭 Postgresql 服务器上的连接?
我想保持池大小为 2,因为我只有 20 个允许的总连接数
先感谢您!