终止休眠 MySQL 连接
无数连接长时间保持空闲状态(最多 5 分钟),造成严重问题。是否可以在不重启 MySQL 服务的情况下终止或关闭这些连接?尽管维护了旧版 PHP 系统,禁止在查询执行期间关闭连接,但 my.cnf 文件中的超时值是否应该从默认的 8 小时减少?
手动清理
进程ID可用于使用KILL命令手动终止连接:
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;
但是,这种方法有潜力缺点:
自动化清理
另一种解决方案是为 MySQL 服务器配置更短的 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 脚本应正确配置为在完成后关闭连接,并且应禁用网络服务器的连接池。
以上是我可以终止休眠的 MySQL 连接而不重新启动服务吗?的详细内容。更多信息请关注PHP中文网其他相关文章!