今天,开发一同事反映,每天早上来以后tomcat连接不上mysql,需要重启tomcat才行,本人经验有限,只得先google后baidu,网上普遍认为是mysql的等待超时连接所致,其默认的时间是28800,也就是8个小时。超过这个时间后,就自动关闭该连接,其参数为wait_timeout,还有一个交互参数为interactive_timeout。

这里有疑问?为什么tomcat不重新连接,而是要重启才行呢?????

     由于是开发阶段,所以连接绝对够用,就把此值设大一点吧,打开my.cnf文件,在【mysqld】标签下设子:

    wait_timeout=1814400

参数含义:服务器关闭非交互连接之前等待活动的秒数。比如sleep连接,就是这种状态。是一种已经断开的链接

 

    interactive_timeout=1814400

   参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。

参数默认值:28800秒(8小时)
     interactive_timeout指你连接着也会把你释放掉,强制关闭掉连接着但是没操作的连接。客户端一直连接着,但是没有输入sql,可是也没断开的这种链接

区别就是客户端是否还连接着(感谢杭州-黑影的指教)

必须重启mysql。也可以先用set设置及时生效,然后在配置文件里做设置,等下次维护重启再生效

这里需要注意一下,mysql的环境变量也分全局变量和会话变量

 show variables like '%timeout%'\G 是查看会话变量

 show global variables like '%timeout%'\G 是查看全局变量。

重启,改好,待明天验证,验证通过,不过黑影说,只要修改wait_timeout就Ok了