java - Tomcat 7 session 超时但 postgres sql 连接保持 Activity 状态

标签 java database tomcat jdbc connection-pooling

我们利用了一个使用 Tomcat 7 和 Postgres 数据库的供应商应用程序。我们的 postgres 实例有 300 个连接的限制,我们正在最大化,因为当 Tomcat 在 30 分钟后使 session 过期时,它不会终止数据库连接。不幸的是,我们无法访问只有 war 文件的源代码。

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

我想知道 Tomcat 中是否有某种类型的配置可以终止这些在一段时间内处于空闲状态的数据库连接?有什么想法吗?不幸的是,供应商已经研究了几个月的问题,但没有找到解决方案。

感谢您的任何见解!

最佳答案

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

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

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

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

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

关于java - Tomcat 7 session 超时但 postgres sql 连接保持 Activity 状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18777601/

相关文章:

java - 部署在 Tomcat 上的 Spring Boot MVC 应用程序无法正常工作

Apache httpd 访问日志或 tomcat 访问日志

java - 具有匿名类型构造函数的对象类

javascript - 如何在JavaScript中从另一个JavaScript文件返回音频?

sql-server - 在 Entity Framework 中处理 View 关系

MySQL:是否可以为两个不同的表列创建外键?

php - 如何在两个不同的 Web 服务器(例如 xampp 和 tomcat)之间使用 session 值。

java - 使用 Selenium Webdriver TakesScreenshot 方法捕获 Base64 图像。我可以缩小图像尺寸吗?

Java map 一对一替换

java - Android手机root状态