我正在使用Sping Boot 应用程序,它具有API控制器来生成报告。实际的服务函数是围绕@Async注解 Package 的,函数进行DB调用并生成csv报告。我还使用Hikari CP进行连接池管理,并使用JPA + QueryDSL形成选择查询。
我发现了一个奇怪的问题,即在成功生成文件后,数据库连接没有被释放。每次对控制器/服务函数的新调用都会创建新的活动连接,并且该连接仍处于活动状态。它没有被释放,因为一旦达到我的最大池大小限制,我就会收到来自光的连接不可用错误。
为什么没有释放连接的任何建议。服务功能只发出选择查询,不发出更新或插入。
Hikari CP配置:
spring.datasource.hikari.maximum-pool-size: "80"
spring.datasource.hikari.idle-timeout: "300000"
spring.datasource.hikari.connectionTimeout: "600000"
spring.datasource.hikari.minimum-idle: "15"
我的服务功能
@Async
@Override
public void exportListing(String[] filter) {
try {
}
catch(Exception e)
{
}
1条答案
按热度按时间alen0pnh1#
我通过将它 Package 在@Transactional块中来修复它,这确保了一旦函数完成,DB连接就会关闭。