防止连接Mysql超时,JDBC探活配置

我们知道Mysql有两个关于连接超时的参数,默认为8小时:

MySQL > show global variables like '%timeout%';

wait_timeout  = 28800  非交互连接等待时间
interactive_timeout = 28800 交互连接等待时间

MySQL > show processlist;

防止连接Mysql超时,JDBC探活配置_第1张图片

当connection空闲(Sleep)超过8小时,Mysql将自动断开该connection,而JDBC连接池并不知道该connection已经失效,如果这时有Client请求connection,JDBC将该失效的Connection提供给Client,将会造成异常。

 

一般会有5种处理方式:

1、MYSQL调大数据库超时参数:如果太大,可能导致连接数较多,引起性能下降

set global wait_timeout = 2073600;

set global interactive_timeout = 2073600;

2、JDBC配置Mysql连接URL重连机制

jdbc:mysql://localhost:3306/test?user=root&password=&autoReconnect=true

3、JDBC减少连接池内连接生存周期:使之小于所设置的wait_timeout 的值

  

4、JDBC探活:每隔一段时间唤醒连接

 

5、JDBC升级驱动版本

由于老版本有些功能不兼容,导致连接报错,可以升级到最新版本后再观察

下载地址:https://dev.mysql.com/downloads/connector/j/

 

JDBC主要参数说明:

 

  

  

  

  

  

  

  

  

  

  

  

  

  

 

     

 

 

 

 

 

 

其他参数:

防止连接Mysql超时,JDBC探活配置_第2张图片

更多参数解读:

https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html

你可能感兴趣的:(mysql)