mysql time_out超时

出现下面异常

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

The last packet sent successfully to the server was 0 milliseconds ago

改mysql的wait_timeout时间,单位为秒;缺省情况下,wait_timeout的初始值是28800(mysql 查询命令;show variables like  '%timeout%')

linux(/etc/目录)为修改my.cnf 最长365天

windows 为my.ini 最长24天

不太建议上面这种改法,用户大数据库连接很可能爆掉;

可修改连接池的的超时时间

<?xml version="1.0" encoding="UTF-8"?>
<proxool>
<alias>control</alias>
<driver-url><![CDATA[jdbc:mysql://127.0.0.1:3306/testdb?useUnicode=true&characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000&zeroDateTimeBehavior=convertToNull]]></driver-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver-properties>
<property name="user" value="root"></property>
<property name="password" value=""></property>
</driver-properties>

<!--

保留线程处于睡眠状态的最长时间,house keeper 的职责就是检查

各个连接的状态,并判断是否需要销毁或者创建.

-->
<house-keeping-sleep-time>90000</house-keeping-sleep-time>
<maximum-new-connections>20</maximum-new-connections>
<prototype-count>5</prototype-count>

<!--定义在从数据库最大连接数 -->   

<maximum-connection-count>800</maximum-connection-count>

<!--定义在从数据库最小连接数 --> 

<minimum-connection-count>10</minimum-connection-count>
<maximum-connection-lifetime>14400000</maximum-connection-lifetime>
<test-before-use>true</test-before-use>
<house-keeping-test-sql>select CURRENT_DATE</house-keeping-test-sql>
</proxool>

上面的单位为毫秒级别,maximum-connection-lifetime改为小于mysql超时时间,但是还不起效果;再看连接字符串connectTimeout小于house-keeping-sleep-time,所以把连接超时时间改为180000(30分钟)

socketTimeout也改为180000

原文地址:https://www.cnblogs.com/ytmf007/p/10978111.html