我目前有超过100个处于睡眠状态的连接.
某些连接必须保持睡眠状态(并且不要关闭),因为它是永久连接,但是其他一些(具有不同的用户名)来自某些PHP脚本,我希望它们能够非常快地超时.
是否可以为每个用户设置wait_timeout?如果是,怎么样?
Bil*_*win 27
没有每用户超时配置,但您可以wait_timeout
动态设置该值.也就是说,在您作为给定用户建立连接后,您可以发出一个语句,将超时值更改为您希望该用户会话的超时值.
在mysql命令行客户端中尝试以下实验:
mysql> SHOW VARIABLES LIKE 'wait_timeout';
Run Code Online (Sandbox Code Playgroud)
...显示28800(即8小时),这是默认值wait_timout
.
mysql> SET SESSION wait_timeout = 60;
mysql> SHOW VARIABLES LIKE 'wait_timeout';
Run Code Online (Sandbox Code Playgroud)
...显示60.
然后你可以退出会话,重新连接,再次默认wait_timeout
是28800.所以它仅限于当前会话的范围.
您还可以打开第二个窗口并启动单独的mysql客户端会话,以证明更改wait_timeout
一个会话不会影响其他并发会话.
您应该在以下位置设置以下变量my.conf
:
[mysqld]
interactive_timeout=180
wait_timeout=180
Run Code Online (Sandbox Code Playgroud)
wait_timeout
是自动连接的超时(在我看来,在Web服务器上超过30个太多).
interactive_timeout
是空闲会话的控制台交互超时.