如何根据MySQL中的用户登录设置连接超时

ace*_*mtp 19 mysql timeout

我目前有超过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一个会话不会影响其他并发会话.


Syc*_*ych 5

您应该在以下位置设置以下变量my.conf:

[mysqld]
interactive_timeout=180
wait_timeout=180
Run Code Online (Sandbox Code Playgroud)

wait_timeout自动连接的超时(在我看来,在Web服务器上超过30个太多).
interactive_timeout是空闲会话的控制台交互超时.

  • 许多(大多数?)Web 服务器使用连接池。在这种情况下,180 可能太低了。 (2认同)