我的数据库似乎有近100个“睡眠”连接,我相信摆脱它们会更好。我找到了以下脚本,它可以帮助我从命令行分析数据库中的所有表。有没有人知道类似的一个班轮可以杀死所有“睡眠”连接?
mysql -p -D<database> -B -e "SHOW TABLES" \
| awk '{print "CHECK TABLE "$1";"}' \
| mysql -p -D<database>
答案 0 :(得分:0)
您可以将wait_timeout变量设置为比默认值更短的时间,并且一旦超过此时间值就应该终止连接。
从我读过的内容来看,有些烦恼和连接仍会随机出现,特别是在负载下,但wait_timeout变量将是开始的地方。
答案 1 :(得分:0)
一些想法:
您可以使用SHOW PROCESSLIST
代替SHOW TABLES
。我对awk
linux实用程序并不熟悉,但我认为你可以在那里进行各种模式匹配。
或者,您可以编写一个脚本来查询MySQL的“SHOW PROCESSLIST”,解析睡眠连接的结果集,并相应地使用KILL <process id>