mysql - tomcat connectionpool mysql配置避免空闲连接超时

标签 mysql scala tomcat jdbc connection

我正在使用 tomcat 7 和 tomcat jdbc 连接池来分配 mysql 连接。

在夜间,我们没有任何事件,因此所有连接空闲时间超过 8 小时,并被 mysql 删除。 (mysql 的 wait_timeout 默认值)。

我们使用以下池配置:

<Resource name="jdbc/dbName"
        auth="Container"
        factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
        type="javax.sql.DataSource"
        maxActive="50"
        maxIdle="30"
        maxWait="5000"
        driverClassName="com.mysql.jdbc.Driver"
        validationQuery="SELECT 1"
        testOnBorrow="true"
        testWhileIdle="true"
        timeBetweenEvictionRunsMillis="10000"
        removeAbandoned="true"
        removeAbandonedTimeout="60"
        logAbandoned="true"
        username="xxx"
        password="xxx"
        url="jdbc:mysql://host:3306/xxx"/>

我期待 EvictionPolicy 在闲置连接被 MySql 关闭之前删除它们。不知何故,一天后我们得到以下异常:

com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allowed after connection closed.Connection was implicitly closed by the driver.

我想这个问题应该是jdbc连接池可以解决的,但是配置属性很多,我以前没有用过这个池。任何人都有一套很好的属性来配置池不抛出关闭的连接?

亲切的问候,

阿尔伯特

最佳答案

解决了。事实证明,这毕竟不是一个池化问题。我们一起使用 squeryl 和 lift,这不是一个令人满意的组合(目前)。连接在返回池之前关闭。 放弃 lift 的数据库连接管理,转而使用 squeryl 解决了这个问题。

关于mysql - tomcat connectionpool mysql配置避免空闲连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6953762/

相关文章:

部署我的 play Framework 时出现 Tomcat 错误

php - 如何使用 PHP 准备好的语句插入 MySQL

mysql - 值内的 SQL 求和

mysql - 如何将我的结果命名为其他名称

scala - 在 Scala 中创建最小堆最简单、最有效的方法是什么?

java - 配置 tomcat 以部署某些应用程序是否被认为是一种好/坏的做法?

mysql - 无法从工作台连接到数据库 MySQL

scala - 作为单例集合的选项 - 现实生活中的用例

scala - 使用 Akka Streams、Scala 异步读取多个文件

sql - 我无法在我的项目中上传文件