关于MySQL优化----wait_timeout和interactive_timeout的设置问题的疑惑

gxg353 2010-07-07 03:41:08
关于MySQL优化----wait_timeout和interactive_timeout的设置问题的疑惑


MySQL中的配置参数interactive_timeout和wait_timeout
MySQL服务器所支持的最大连接数是有上限的,因为每个连接的建立都会消耗内存,因此我们希望客户端在连接到MySQL Server处理完相应的操作后,应该断开连接并释放占用的内存。如果你的MySQL Server有大量的闲置连接,他们不仅会白白消耗内存,而且如果连接一直在累加而不断开,最终肯定会达到MySQL Server的连接上限数,这会报'too many connections'的错误。对于wait_timeout的值设定,应该根据系统的运行情况来判断。在系统运行一段时间后,可以通过show processlist命令查看当前系统的连接状态,如果发现有大量的sleep状态的连接进程,则说明该参数设置的过大,可以进行适当的调整小些。

我按照这个提示 操作如下
mysql> show variables like '%timeout%';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| interactive_timeout | 28800 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 28800 |
+-------------------------+-------+
8 rows in set (0.00 sec)

mysql> set global wait_timeout=300 ,interactive_timeout=300;

退出 重新登录。。

mysql> show variables like '%timeout%';
+-------------------------+-------+
| Variable_name | Value |
+-------------------------+-------+
| connect_timeout | 10 |
| delayed_insert_timeout | 300 |
| interactive_timeout | 300 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| slave_net_timeout | 3600 |
| table_lock_wait_timeout | 50 |
| wait_timeout | 300 |
+-------------------------+-------+
8 rows in set (0.00 sec)



之后我的疑惑: 为什么 show processlist 中 time 列还有超过300秒的sleep进程?????



mysql> show processlist;
+----------+----------------+---------------------+----------+-------------+---------+----------------------------------------------------------------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----------+----------------+---------------------+----------+-------------+---------+----------------------------------------------------------------+------------------+
| 2 | aa | 192.168.1.81:36831 | NULL | Binlog Dump | 2362827 | Has sent all binlog to slave; waiting for binlog to be updated | NULL
| 4868501 | aa | 192.168.1.129:37854 | NULL | Binlog Dump | 515107 | Has sent all binlog to slave; waiting for binlog to be updated | NULL
| 12600468 | abc_admin | 192.168.1.116:25271 | abc | Sleep | 7399 | | NULL
| 12608033 | abc_admin | 192.168.1.116:27573 | abc | Sleep | 7306 | | NULL
| 12624454 | abc_admin | 192.168.1.116:33785 | abc | Sleep | 6174 | | NULL
| 12626744 | abc_admin | 192.168.1.116:34358 | abc | Sleep | 6626 | | NULL
| 12642032 | abc_admin | 192.168.1.116:39647 | abc | Sleep | 6108 | | NULL
| 12654395 | abc_admin | 192.168.1.116:44124 | abc | Sleep | 3805 | | NULL
| 12698547 | abc_admin | 192.168.1.116:61930 | abc | Sleep | 3745 | | NULL
...全文
8945 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
loveflea 2010-07-08
  • 打赏
  • 举报
回复
On thread startup, the session wait_timeout value is initialized from the global wait_timeout value or from the global interactive_timeout value, depending on the type of client (as defined by the CLIENT_INTERACTIVE connect option to mysql_real_connect()).

现在很多人使用连接池,所以这个参数保持默认值就可以了;您也可以用下面的工具杀死空闲连接!

http://www.maatkit.org/doc/mk-kill.html#match_command

Check for sleeping processes and kill them all every 10s:

mk-kill --match-command Sleep --kill --no-only-oldest --interval 10
gxg353 2010-07-08
  • 打赏
  • 举报
回复
没人回答我吗?
gxg353 2010-07-07
  • 打赏
  • 举报
回复
确实是变更之前的,set global wait_timeout=300 ,interactive_timeout=300; 设置多大比较合理?

问题1:这里为什么要同时设置interactive_timeout,wait_timeout的设置才会生效?

问题2:interactive的值如果设置的和wait_timeout不同,为什么Interactive_timeout会覆盖wait_timeout?

问题3:在进行MySQL优化时,因为interactive_timeout决定的是交互连接的时间长短,而wait_timeout决定的是非交互连接的时间长短。如果在进行连接配置时mysql_real_connect()最后一个参数client_flag不设置为CLIENT_INTERACTIVE,是不是interactive_timeout的值不会覆盖wait_timeout?

问题4:为了减少长连接的数量,在设置优化时是不是可以将interactive_timeout的值设置的大些,而wait_timeout的值设置的小些?但是问题2的描述好像又不允许这样。。。

不知道各位同学有没有研究过这个参数配置的,望不吝赐教~~~
ACMAIN_CHM 2010-07-07
  • 打赏
  • 举报
回复
建议你再连一个进去,这个新的SESSION应该会在300秒后断开。

ACMAIN_CHM 2010-07-07
  • 打赏
  • 举报
回复
你的这些进程是什么时候连进来的?在更改之前,还是更改之后?

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧