MySQL中连接超时自动断开的解决方案
前言:
MySQL数据库一般默认的连接超时时间为3600s(1小时),但是在进行大规模的线程事务操作时,一个连接会一直等待执行,这时候如果数据库的超时时间设置的过短,就可能会出现Mysql数据连接自动被释放,影响后面对数据库的操作。
当然MySQL连接设置的大小,要根据需求场景进行设置,wait_timeout过大也有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可 能会遭遇到“mysql has gone away”之类的问题。
所以需要根据自己项目业务场景,进行适当的设置超时时间。
首先介绍下如何查看mysql的超时时间方法
在mysql命令提示符下执行以下命令即可:
SHOW GLOBAL VARIABLES LIKE '%timeout%'
其次连接超时wait_timeout设置方法如下:
方案1.在mysql命令提示符执行以下命令即可(临时方法,重启MySQL服务器会失效,恢复默认值)
SET GLOBAL wait_timeout=15000
方案2.修改mysql的配置文件(推荐方法)
- Windows下,配置文件路径为MySQL安装的根目录中。my.ini
- Linux系统下,配置文件为路径/etc/my.cnf
[mysqld] wait_timeout=10000 interactive_timeout=10000
保存退出,重启MySQL服务即可