【发布时间】:2017-05-19 06:17:58
【问题描述】:
在我们的代码中(通过计时器作为计划作业运行),我们有并行运行的线程来执行数据库操作。这里的问题是每个线程都通过 Hibernate 工厂启动连接。这些连接在每次数据库操作后都会关闭,但仍会存储在连接池中(作为 INACTIVE)。只有在作业/主进程被杀死后,所有连接才会被释放。有没有办法在数据库操作后从连接池中释放连接。当我们使用 cron 作业而不是计时器时,进程会自动终止,但我们在这里不需要 cron。 请帮助我们解决这个问题,因为我们已经接近生产版本。 注意:我们是在 QA 测试工作负载繁重时才知道这一点的,每次负载都会拉出新的连接。
【问题讨论】:
-
听起来像是连接泄漏而不是池。
-
我们也怀疑过。但是我们已经检查了代码,并确保我们已经关闭了所有连接。发生的情况是,当我们关闭连接时,它会返回池而不是释放,并且只有在邮件线程被终止时才会释放池。那么我们可以在不退出进程的情况下释放池吗?
标签: java connection connection-pooling