长事务会阻止 HikariCP 中的活动连接

Long transactions block active connections in HikariCP

当 Java 服务 (HikariCP+JDBC+Oracle, pool=10) 在 运行 此交易 Hikari 保留连接(至少通过 JMX 显示它)直到交易完成。 由于服务调用导致交易时间很长(无法将其从交易中排除,我已经将超时最小化)活动连接保留时间过长,它会阻止所有服务。

线程在 getConnection() 上被阻塞。

这里最主要的是,Active connection 只在 Hikari 而不是在 Oracle 端,Oracle 显示为 inactive。例如。 Hikari 正在浪费连接,因为实际上它没有对 DB 做任何事情。

Hikari 中是否有任何配置可以解决此问题?或者可能有一些模式如何避免它?

将 Hikari 更新到最新版本后,问题得到解决(有几个版本提到了线程问题的修复),另外为了安全起见 maxLifetime 有已经设置到我们这边了,暂时还可以。