相关疑难解决方法(0)

MySQL连接超时问题 - 使用Hibernate和ORM在Tomcat上的Grails应用程序

我在VPS上的Ubuntu上有一个运行在Tomcat上的小型grails应用程序.我使用MySql作为我的数据存储区,一切正常,除非我离开应用程序超过半天(8小时?).我做了一些搜索,显然这是wait_timeoutmysql.cnf中的默认值,所以8小时后连接会死,但Tomcat不会知道,当下一个用户试图查看该站点时,他们会看到连接失败错误.刷新页面将解决此问题,但我想完全摆脱错误.对于我的MySql版本(5.0.75),我只有my.cnf而且它不包含这样的参数.在任何情况下,更改此参数都无法解决问题.

这篇Blog Post似乎报告了一个类似的错误,但我仍然不完全理解我需要配置什么来解决这个问题,而且我希望有一个比另一个第三方库更简单的解决方案.我正在运行的机器有256MB内存,我正在努力使程序/服务的运行数量降到最低.

我可以在Grails/Tomcat/MySql中配置什么来让它消失吗?

提前致谢,

GAV

从我的Catalina.out;

2010-04-29 21:26:25,946 [http-8080-2] ERROR util.JDBCExceptionReporter  - The last packet successfully received from the server was 102,906,722 milliseconds$
2010-04-29 21:26:25,994 [http-8080-2] ERROR errors.GrailsExceptionResolver  - Broken pipe
java.net.SocketException: Broken pipe
        at java.net.SocketOutputStream.socketWrite0(Native Method)
         ...
2010-04-29 21:26:26,016 [http-8080-2] ERROR util.JDBCExceptionReporter  - Already closed.
2010-04-29 21:26:26,016 [http-8080-2] ERROR util.JDBCExceptionReporter  - Already closed.
2010-04-29 21:26:26,017 [http-8080-2] ERROR servlet.GrailsDispatcherServlet  - HandlerInterceptor.afterCompletion threw exception
org.hibernate.exception.GenericJDBCException: Cannot release connection
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.sql.SQLException: Already closed.
        at …
Run Code Online (Sandbox Code Playgroud)

mysql grails tomcat timeout

21
推荐指数
2
解决办法
2万
查看次数

即使使用连接验证,Tomcat JDBC Conencton Pool + MySQL 也会出现“断管”问题

我正在努力配置 Tomcat JDBC 连接池以实现可靠性。当前的问题是,在测试环境中,我在 webapp 中有这样的 scanerio:

  • 第 1 天:一切正常
  • 第 2 天:webapp 无法与 MySQL 通信几个小时,日志中有很多“断管”
  • 第 3 天:令人惊讶的是,一切又恢复正常(无需输入或重新启动)

我已经配置了validationInterval, validationQuery, validationTimeout. 这是我的数据源配置:

<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource"
    destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="username" value="${dbUser}" />
    <property name="password" value="${dbPass}" />
    <property name="url" value="${dbUrl}" />
    <property name="defaultAutoCommit" value="false" />
    <property name="defaultTransactionIsolation">
    <util:constant static-field="java.sql.Connection.TRANSACTION_SERIALIZABLE" />
    </property>

    <property name="maxActive" value="300" />
    <property name="maxIdle" value="25" />
    <property name="initialSize" value="5" />

    <property name="validationInterval" value="5000" />
    <property name="validationQuery" value="SELECT 1"/>
    <property name="validationQueryTimeout" value="3" …
Run Code Online (Sandbox Code Playgroud)

java mysql tomcat connection-pooling jdbc

5
推荐指数
1
解决办法
4970
查看次数

标签 统计

mysql ×2

tomcat ×2

connection-pooling ×1

grails ×1

java ×1

jdbc ×1

timeout ×1