我看到许多连接处于打开状态,并且很长一段时间(例如5分钟)保持空闲状态。
有什么解决方案可以在不重新启动mysql服务的情况下从服务器终止/关闭它?
我正在维护旧的PHP系统,无法关闭为执行查询而建立的连接。
我应该将my.cnf文件中的超时值减少为默认的8小时吗?
# default 28800 seconds interactive_timeout=60 wait_timeout=60
您可以杀死该进程ID。
mysql> show full processlist; +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ | Id | User | Host | db | Command | Time | State | Info | +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ | 1193777 | TestUser12 | 192.168.1.11:3775 | www | Sleep | 25946 | | NULL | +---------+------------+-------------------+------+---------+-------+-------+-----------------------+ mysql> kill 1193777;
但:
或者您通过在wait_timeout和上设置较短的超时来配置mysql服务器interactive_timeout
wait_timeout
interactive_timeout
mysql> show variables like "%timeout%"; +--------------------------+-------+ | Variable_name | Value | +--------------------------+-------+ | connect_timeout | 5 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | interactive_timeout | 28800 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | table_lock_wait_timeout | 50 | | wait_timeout | 28800 | +--------------------------+-------+ 9 rows in set (0.00 sec)
设置为:
set global wait_timeout=3; set global interactive_timeout=3;
(并且还在服务器重启时在配置文件中设置)
但是,您正在处理症状而不是根本原因-为什么打开连接?如果PHP脚本完成了,它们是否应该关闭?确保您的网络服务器未使用连接池…