目前,我们服务器上的 MySQL 的 wait_timeout 设置为 28800,据我所知,这是默认值。我一直试图按照顾问的建议将其更改为 60,但更改似乎不需要很长时间。以下是我以 root 身份登录 Linux 并以数据库用户身份登录 MySQL 时尝试的操作:
1)登录MySQL并:
show variables like '%wait_timeout%';
set wait_timeout=60;
2)编辑/etc下的my.cnf文件,在[mysqld]和[mysqld_safe]中添加以下行:
wait_timeout=60
当我尝试 #1 并选择立即显示 wait_timeout 变量时,它正确显示为 60。但是,如果我等待一两分钟,它又会恢复到 28800。当我尝试 #2 时,即使重新启动 Apache 和 MySQL,该选项似乎也不起作用。
my.cnf 似乎是我能找到的唯一此类文件版本。
我尝试了以下操作,但没有显示任何参数:
mysql --print-defaults
重新启动 Apache 时,我一直在使用:
/usr/sbin/apachectl graceful
重新启动 MySQL 时,我一直在使用:
/etc/init.d/mysqld restart
有任何想法吗? :-(
答案1
恐怕你可能遇到了 MySQL 的几个陷阱之一。请参阅此错误报告。
如果我理解正确的话,MySQL 命令行客户端会导致 mysqld 使用interactive_timeout
而不是wait_timeout
。
以下查询返回什么?
SELECT @@global.wait_timeout, @@session.wait_timeout;
答案2
1.编辑my.cnf(MySQL配置文件)。
Ubuntu 16.04
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
Debian
sudo vi /etc/mysql/my.cnf
Centos
sudo vi /etc/my.cnf
2. 找到超时配置并进行调整以适合您的服务器。
[mysqld] 等待超时 = 31536000 interactive_timeout = 31536000
3. 保存更改并退出编辑器。
4. 重新启动 MySQL 以应用更改,如下所示:
sudo /etc/init.d/mysql 重启
答案3
Apache 不参与此过程,因此您可以跳过任何与此相关的操作。
至于 MySQL,您是否尝试过查看是否有其他 my.cnf 文件可能覆盖基本文件?此外,实际上不是重新启动,而是关闭 MySql 服务器,然后启动它。可能是因为有一两个线程保持打开状态,导致值恢复。