gpt4 book ai didi

java - 无法 check out Spring DB 连接,但 300 个连接中有 290 个是 "IDLE"

转载 作者:行者123 更新时间:2023-11-29 13:04:17 25 4
gpt4 key购买 nike

我有一个使用 Hibernate 4.1.1 和 Spring 3.1.1 以及 Postgres 9.2 的 Web 应用程序。我还使用 spring transaction api 和 c3p0 连接池。数据库服务器位于另一台服务器上,没有安装 pgbouncer,只有 Postgres。

我在日志中有很多关于无法检查数据库连接的错误。但是当我在 Postgres 服务器上查看状态时(“SELECT datname,procpid,current_query FROM pg_stat_activity”),这些连接中有 95% 是“空闲”的。

这是怎么发生的?此幽灵连接不允许执行正常查询。

错误:

Caused by: com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResourcePool@4bbf8a41 -- timeout at awaitAvailable()

最佳答案

当我使用 Spring 事务管理时,我遇到了 Spring 的这个问题。C3p0 连接处于空闲状态且未被重用,当达到总连接上限时,应用程序会出现数据库连接错误。

唯一对我有用的解决方案是定期强制终止 C3P0 连接 [C3P0 提供 htis 选项]。这是一个糟糕的解决方案,不推荐,除非它是我的唯一解决方案。

查看 htis url 上的 maxConnectionAge:http://www.mchange.com/projects/c3p0/#managing_pool_size

关于java - 无法 check out Spring DB 连接,但 300 个连接中有 290 个是 "IDLE",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19070022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com