我正在配合Tomcat JDBC连接池以实现可靠性.目前的问题是在测试环境中我在webapp中有这样的scanerio:第1天:一切正常第2天:webapp几个小时内无法与MySQL通信,日志中有很多“断管”第3天:令人惊讶的是,一切都恢...
我正在配合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" />
<property name="minIdle" value="5" />
<property name="initSQL" value="SET time_zone = '+00:00';" />
</bean>
我在连接URL中没有autoReconnect = true参数,只有UTF8编码.
确切的错误是:
Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:
The last packet successfully received from the server was 38,700,615
milliseconds ago. The last packet sent successfully to the server was
38,700,615 milliseconds ago. is longer than the server configured
value of 'wait_timeout'. You should consider either expiring and/or
testing connection validity before use in your application, increasing
the server configured values for client timeouts, or using the
Connector/J connection property 'autoReconnect=true' to avoid this
problem.
Caused by: java.net.SocketException: Broken pipe
解决方法:
我们的一个应用程序遇到了类似的问题,经过大量的挖掘后,我们添加了以下属性来解决所有连接问题:
maxAge="180000"
testOnBorrow="true"
testWhileIdle="true"
validationInterval="0" //forces the connection pool to validate each time a connection is given to the application
沃梦达教程
本文标题为:java – Tomcat JDBC Conencton Pool MySQL提供“Broken pipe”问题,即使是连接验证也是如此
基础教程推荐
猜你喜欢
- springboot为异步任务规划自定义线程池的实现 2023-01-02
- Java 8 中 Function 接口使用方法介绍 2023-01-18
- Java内存泄露 2023-10-08
- JSP过滤器Filter配置过滤类型全部汇总 2023-08-01
- 修改 mybatis-generator 中数据库类型和 Java 类型的映射关系 2023-11-05
- Java深入讲解instanceof关键字的使用 2022-11-25
- java代码规范review异常事故记录 2023-01-02
- java – 如何在使用Spring JdbcTemplate时动态更改数据库/目录 2023-11-08
- MyBatis映射器mapper快速入门教程 2023-06-01
- SpringBoot自动配置特点与原理详细分析 2023-04-17