mysql配置文件中有:wait_timeout 可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止!
# vi /etc/my.cnf [mysqld] wait_timeout=10 # /etc/init.d/mysql restart
对于正在运行中的生产服务器,在不能停止服务情况下,修改此项怎么办
SHOW VARIABLES LIKE 'wait_timeout'; #会话变量 SHOW GLOBAL VARIABLES LIKE '%timeout';#全局变量
- 缺省情况下,wait_timeout的初始值是28800
- wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,
- 设置的过小,可能会遭遇到“MySQL has gone away”之类的问题
- 对于正在运行中的生产服务器,在不能停止服务情况下,修改此项,以root用户登录到mysql,执行:
set global wait_timeout=100; set global wait_timeout=3600;
即可。
show variables # 发现设置好像并没有生效 # 因为show variables等同于 show session variables查询的是会话变量 show global variables # 查询的才是全局变量
# 仅想临时性的修改,可以修改会话变量,重启服务器后,wait_timeout的值又会变成28800 set wait_timeout=10; # 或 set session wait_timeout=10; #