当前位置: 首页 > 知识库问答 >
问题:

长事务阻塞HikariCP中的活动连接

鲍俊杰
2023-03-14

当Java服务(HikariCP JDBC Oracle,pool=10)有包括数据库操作和外部服务调用在内的大事务时,我遇到了这个问题,在运行此事务期间,Hikari保留连接(至少通过JMX显示它),直到事务完成。由于服务调用(无法将其从事务中排除,我已经最小化了超时),因此由于服务调用而导致操作很长,因此活动连接保留的时间太长,它会阻止所有服务。

线程在getConnection()上被阻止。

这里的主要问题是,活动连接仅在光上,而不在Oracle端,Oracle将其显示为非活动。例如,光正在浪费连接,因为实际上它没有对数据库做任何事情。

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

共有1个答案

印高阳
2023-03-14

将Hikari更新到最新版本后,它得到了解决(有几个版本提到了修复线程问题),另外为了安全起见,maxLifetime已在我们这边设置,目前工作正常。

 类似资料:
  • 此刻我被困住的一点是调试处于“活动”状态的连接,以及它们正在做什么或它们当前被困的原因。 当我运行“10个同时用户”时,它基本上可以转换成2或3倍于此的查询,因此,当我打开HikariCP调试日志时,它会挂在类似的位置-上,而“active”连接并没有真正释放连接,这正是我试图找出的原因,因为查询相当简单,表本身只有4个字段(包括主键)。 HikariCP人员的最佳实践通常也是,增加连接池不是实现

  • 简介: null 问题是,在提交通过长时间运行的任务全程记录后,连接池使用“活动”连接。如果突发足够大,这可能会耗尽我拥有的任何大小的池。 我正在使用具有以下结构的spring boot: 控制器-在“/”处响应,并使“服务”autowired。 服务-包含与数据库交互的所有JPA存储库和@Transactional方法。

  • > 可能是我有这个确切的问题https://github.com/brettwooldridge/hikaricp/issues/109在我的例子中,活动连接随着每个事务的增加而增加。 HikariCP-连接不可用这也是一个相同的问题。但没有人对此提供明确的解决方案。顺便说一句,我使用了begging中的。

  • 异步编程 异步操作 Node 采用 Chrome V8 引擎处理 JavaScript 脚本。V8 最大特点就是单线程运行,一次只能运行一个任务。 Node 大量采用异步操作(asynchronous operation),即任务不是马上执行,而是插在任务队列的尾部,等到前面的任务运行完后再执行。 提高代码的响应能力。 异步IO也叫非阻塞IO。例如读文件,传统的语言,基本都是读取完毕才能进行下一步

  • java.lang.IllegalStateException:org.hibernate.transientPropertyValueException:object引用了一个未保存的瞬态实例-在刷新之前保存瞬态实例:entity.customer.passport->entity.passport 注意:如果我在实体类中使用CascadeType.Persist,我可以在DB中插入另一行。

  • 我有一个应用程序,在其中按下开始按钮后,服务将开始轮询几个传感器,每当传感器值发生变化时,将传感器数据存储到某个对象中。每10毫秒,就会发生一次数据库插入,获取对象的当前值并将其存储到数据库中。这会发生30分钟 考虑到插入的速度和持续时间,我想在一个独立于UI线程的线程中运行它,这样导航就不会受到影响。因此,我的服务将通过将数据添加到队列中来为线程提供一些数据,然后另一个线程(消费者)将从队列中取