1

我们利用使用 Tomcat 7 和 Postgres DB 的供应商应用程序。我们的 postgres 实例有 300 个连接的限制,我们正在最大化,因为当 Tomcat 在 30 分钟后过期会话时,它不会终止 db 连接。不幸的是,我们只能访问战争文件的源代码。

我们正在使用一个脚本来杀死所有 60 分钟内没有活动的空闲连接,但这会导致问题,因为 Tomcat 仍然认为那里有连接,因此项目没有完全显示。

我想知道Tomcat中是否有某种类型的配置可能会杀死这些空闲一段时间的数据库连接?有什么想法吗?不幸的是,供应商几个月来一直在研究这个问题,但没有找到解决方案。

感谢您的任何见解!

4

1 回答 1

0

这取决于应用程序如何访问数据库。

如果应用程序通过管理自己的连接池直接访问数据库,那么 Tomcat 将无法/将做任何事情来释放放弃的连接。

如果应用程序通过 Tomcat 管理的连接池访问数据库,则可以配置连接池以摆脱废弃的连接:

http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html

正确的应用程序开发需要依赖容器来提供 JDBC 连接,因此,如果您的供应商将他们的应用程序设计得很好,那么只需相应地配置连接池即可。但是,正如您提到的,您的供应商几个月来一直在研究这个问题,应用程序很可能直接进入数据库;在这种情况下(我所知道的)没有任何事情可以解决您在最大连接时遇到的情况。

于 2013-11-16T06:24:14.673 回答