MySQL连接超时设置
首先登录数据库
查看连接数
show processlist;
可以发现有很多连接处于 Sleep
状态 , 这些连接其实暂时是没有用的 , 可以 kill 掉
查看最大连接数
show variables like "max_connections";
安装 MySQL 8.0 默认值是 151 个, 可以适当进行调整
设置最大连接数
set GLOBAL max_connections=1000;
修改最大连接数 , 但是这不是一劳永逸的方法 , 应该要让 MySQL 自动杀死 Sleep 的连接
查看非交互连接超时
show global variables like 'wait_timeout';
这个数值指的是 MySQL 在关闭一个非交互的连接之前要等待的描述 , 默认是 28800 s .
修改非交互连接超时
set global wait_timeout=300;
笔者尝试将其改为 300 s ,在生产上就会遇到服务突然连接不到数据库的情况 , 报错 Communications link failure...
因此又改回了默认值 .
修改交互连接超时
set global interactive_timeout=500;
修改这个数值 , 表示 MySQL 在关闭一个链接之前要等待的秒数 , 至此可以让 MySQL 自动关闭哪些没用的连接 , 但是要注意的是 , 正在使用的连接到了时间也会被关闭 , 因此数值要合适 .
批量Kill连接
首先查出来所用 Sleep 连接 id
select concat('KILL ',id,';') from information_schema.processlist where user='root';
copy 出来后替换后复制回终端运行 .再进行查看
参考链接
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Halcyon Days!