2011-04-15 233 views
2

我们在Tomcat 5.5.27,PostgreSQL 8.3上使用Liferay Portal 5.2.3(带有Hibernate和C3P0)。 通常情况下,c3p0会将连接集中并将其返回以供重用。但有时我们需要大量更新,并且postgreSQL在关闭后不会释放连接(我们可以看到100个IDLE连接)。此外,该问题仅在Linux(Debian 5.0)上重现。 连接由独立的线程建立,在run()方法的finally块中,我们总是关闭它。 我试过不使用池并写了简单的DBConnection管理器(getConnection() - > runQuery() - > closeConnection()),但PostgreSQL没有发布它。PostgreSQL没有关闭连接

+0

不拥有这些闲置的连接出现问题了?检查c3p0文档以了解如何设置最大空闲连接数。 – 2011-04-15 14:53:35

+0

是的,这是一个严重的问题 - 我们得到了一个错误'已经有太多用户'(并且我们无法将连接数增加到无穷大)。我使用c3p0设置 - 它调用connection.close(),但在Postgre方面它仍然处于空闲状态。正如我所提到的,我也尝试过在没有c3p0的情况下使用它。 – ninja 2011-04-15 14:58:23

回答

0

呵呵......这是在代码中的问题(一个坏人没有关闭连接)