我们使用使用Tomcat 7和Postgres DB的供应商应用程序。我们的postgres实例有300个连接的限制,我们正在最大化,因为当Tomcat在30分钟后到期时,它不会终止数据库连接。不幸的是,我们只能访问war文件的源代码。
我们正在使用一个脚本来杀死所有没有活动的空闲连接60分钟,但这导致了问题,因为Tomcat仍然认为有一个连接,所以项目没有完全显示。
我想知道Tomcat中是否存在某种类型的配置可能会导致这些数据库连接空闲一段时间?有什么想法吗?不幸的是,供应商几个月来一直在研究这个问题,但还没有找到解决方案。
感谢您的任何见解!
答案 0 :(得分:0)
这取决于应用程序如何访问数据库。
如果应用程序通过管理自己的连接池直接访问数据库,那么Tomcat就不会/将要做什么来释放废弃的连接。
如果应用程序通过Tomcat管理的连接池访问数据库,则可以配置连接池以清除已放弃的连接:
http://tomcat.apache.org/tomcat-7.0-doc/jdbc-pool.html
正确的应用程序开发需要依赖容器来提供JDBC连接,因此如果您的供应商很好地设计了他们的应用程序,那么只需相应地配置连接池。但是,正如您提到您的供应商已经研究了这个问题好几个月,应用程序很可能直接进入数据库;在这种情况下,没有任何事情(我知道)可以通过最大连接来解决你遇到的情况。