spring async not release data connection

时间:2017-07-19 06:48:05

标签: spring multithreading jooq bonecp spring-async

Tech Stack
我使用spring boot 1.3.5作为休息服务,内部从数据库中获取数据。使用的是JOOQ,连接池管理由BoneCP完成......

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

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

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

请为此问题建议一个可能的解决方案,我需要触发多个查询并合并结果。 另外一个解决方案,如果有人帮助我,如果在bonecp中有任何设置,在超时后释放连接回到池。

1 个答案:

答案 0 :(得分:0)

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

  1. 增加DB中的连接限制
  2. 减少@Async线程以减少连接使用
  3. 设计@Async块代码以使用池中的一定数量的连接。因此其余的连接将保留用于其他用途。