MySQL 下 Sleep 过多解决方法

配置 wait_timeout 和 interactive_timeout
1
2
3
4
5
6
7
[mysqld]
#默认值:28800秒(8小时),服务器关闭非交互连接之前等待活动的秒数
#在线程启动时,根据全局 wait_timeout 值或全局 interactive_timeout 值初始化会话 wait_timeout 值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)
wait_timeout=10
#默认值:28800秒(8小时),服务器关闭交互式连接前等待活动的秒数
#交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端,interactive的值如果设置的和wait_timeout不同,在交互模式下(CLIENT_INTERACTIVE),interactive_timeout 会覆盖 wait_timeout
interactive_timeout=10
代码中程序执行完毕,应显式调用 mysql_close
MySQL 相关命令
1
2
3
4
5
6
7
8
9
10
11
12
13
#查看连接数, 每有一个新连接请求, max_connections++, 每中止一个连接 max_connections--
show processlist;
mysql> show processlist;
+----+------+---------------------+-----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+---------------------+-----+---------+------+-------+------------------+
| 1 | root | 192.168.227.1:53897 | ymd | Query | 0 | init | show processlist |
| 9 | root | 192.168.227.1:55732 | ymd | Sleep | 8720 | | NULL |
+----+------+---------------------+-----+---------+------+-------+------------------+
2 rows in set

# Command 当前连接执行的命令, Time 连接持续时间
# 当 Command = Sleep, 则 Time 持续时间为 wait_timeout 设置的值, wait_timeout 秒后就会关闭连接
0%