mysql 服务器对于连接的每个进程,如果客户端没有主动关闭该进程,那么服务器在杀死该进程前默认等待的时间是8小时,对于访问较为频繁的数据库,很有可能在短时间内由于访问量过大,同时闲置进程(sleep状态)又没有被及时清除,造成进程堵塞,也就是大家经常碰见的“too many connections”错误
对此问题,我们可以重新设置服务器等待的时间,将其减小,这需要修改my.cnf文件。默认在/etc/mysql文件夹下。配置文件中内容如下:
[mysqld]
wait_timeout=100
interactive_timeout=100
修改好配置文件后,重启mysql服务器即可,之后服务器会把每一个闲置时间超过100秒的进程杀死,从而保证数据库连接的持久性和有效性。
值得注意的是:wait_timeout与interactive_timeout缺一不可,设置完成后,可以进入mysql shell改数据库服务器中,输入 show variables like “%timeout%” 观察timeout设置是否成功。