MySQL存在sleep连接的原因及解决方法

2021-12-03 16:37:03 浏览数 (1)

原因:

使用下面的命令:

代码语言:txt复制
mysql> show full processlist;

可以看到mysql中存在多少sleep连接,有时候会发现,明明已经将程序关闭了,连接怎么还存在呢?

笔者就是在使用navicat的时候发现这个问题的,当使用navicat连接数据库之后,如果在短时间内关闭navicat,就不会存在sleep连接问题,但是如果长时间之后比如十几二十分钟之后,再关闭navicat,那么之前的连接就会一直保持sleep状态,占用mysql的连接数。

其原因主要还是因为某些未知的bug导致连接没有被正确的关闭,具体原因这里不深究,这里讲一下怎么避免这种情况。

解决方法

安装mysql数据库之后,一定要记得对mysql进行一些设置,其中有两个设置能够避免存在大量sleep连接的问题。

这两个设置的命令如下:

代码语言:txt复制
mysql> set global interactive_timeout=100;
mysql> set global wait_timeout=100;

第一个是设置交互式连接保持的最大时间,单位是s(秒),超过该时间该连接就会被清除;

第二个是设置非交互式连接保持的最大时间;

这两个时间默认好像还挺大的,这里我们把它改掉,可以按实际需要改,不过别太大也别太小。

0 人点赞