我使用Spring应用程序,它有API控制器来生成报告。实际的服务函数包装在@异步注释周围,函数进行DB调用并生成csv报告。我还使用Hikari进行连接池管理,使用JPA + QueryDSL形成select查询。
我看到了奇怪的问题,在成功生成文件之后,数据库连接没有被释放。每次对控制器/服务函数的新调用都会创建新的活动连接,并且保持活动状态。它没有得到释放,因为我得到连接是不可用的错误,从Hikari,一旦我的最大池大小限制达到。
任何不释放连接的建议。服务函数只发出选择查询,不进行更新或插入。
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)
{
}发布于 2022-09-13 12:49:34
我通过将它封装在@Transactional块中来修复它,这样可以确保DB连接在函数完成后被关闭。
https://stackoverflow.com/questions/73702441
复制相似问题