1

技术堆栈
我正在使用 spring boot 1.3.5 作为休息服务,它在内部从数据库中获取数据。使用的 ORM 是 JOOQ,连接池管理由 BoneCP 完成......

要求
我有一个要求,我需要触发多个 sql 来获取数据,组合结果并将它们全部返回......

ISSUE
我已经使用 spring async 实现了这一点,但是遇到了 spring sync 方法阻止数据库连接并且没有将它们释放到数据库池的问题。在几次点击后达到最大连接并且应用程序停止响应......

尝试
一旦我从我的方法中删除 @Async 注释它就可以正常工作..

请提出一个可能的解决方案来解决这个问题,我需要触发多个查询并组合结果。如果bonecp中有任何设置在超时后将连接释放回池,那么如果有人帮助我,这也是另一种解决方案。

4

1 回答 1

0

考虑以下解决方案。然后想想什么适合你的应用程序

  1. 增加数据库中的连接限制
  2. 减少@Async 线程以减少连接的使用
  3. 设计您的 @Async 块代码以使用池中的一定数量的连接。因此,其余连接将保留用于其他用途以供应用程序使用。
于 2017-07-19T09:21:44.890 回答