查看: 27991|回复: 13

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

[复制链接]
论坛徽章:
2
2010广州亚运会纪念徽章:垒球
日期:2010-11-22 15:43:332011新春纪念徽章
日期:2011-02-18 11:43:35
跳转到指定楼层
1#
发表于 2010-5-30 15:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
MySQL中的配置参数interactive_timeout和wait_timeout

测试操作系统:Red Flag Desktop 6.0 SP1
Linux核心版本:2.6.23.1-4
测试数据库版本:mysql 5.1.35

(1)interactive_timeout:
参数含义:服务器关闭交互式连接前等待活动的秒数。交互式客户端定义为在mysql_real_connect()中使用CLIENT_INTERACTIVE选项的客户端。
参数默认值:28800秒(8小时)

(2)wait_timeout:
参数含义:服务器关闭非交互连接之前等待活动的秒数。
在线程启动时,根据全局wait_timeout值或全局interactive_timeout值初始化会话wait_timeout值,取决于客户端类型(由mysql_real_connect()的连接选项CLIENT_INTERACTIVE定义)。
参数默认值:28800秒(8小时)

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

问题:
   如果在配置文件my.cnf中只设置参数wait_timeout=100,则重启服务器后进入,执行:
   Mysql> show variables like “%timeout%”;
会发现参数设置并未生效,仍然为28800(即默认的8个小时)。
查询资料后,要同时设置interactive_timeout和wait_timeout才会生效。
【mysqld】
Wait_timeout=100
Interactive_timeout=100
重启MySQL Server进入后,查看设置已经生效。


问题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的描述好像又不允许这样。。。

不知道各位同学有没有研究过这个参数配置的,望不吝赐教~~~


[ 本帖最后由 feiyuzhuanshen 于 2010-5-31 17:46 编辑 ]
论坛徽章:
2
2011新春纪念徽章
日期:2011-02-18 11:43:342012新春纪念徽章
日期:2012-01-04 11:51:22
2#
发表于 2011-12-9 09:01 | 只看该作者
UP

使用道具 举报

回复
论坛徽章:
4
参与2007年甲骨文全球大会(中国上海)纪念
日期:2007-08-06 15:19:02ITPUB十周年纪念徽章
日期:2011-11-01 16:21:152012新春纪念徽章
日期:2012-01-04 11:51:222013年新春福章
日期:2013-02-25 14:51:24
3#
发表于 2011-12-9 10:46 | 只看该作者
wait_timeout:
The number of seconds the server waits for activity on an interactive connection before closing it. An interactive client is defined as a client that uses the CLIENT_INTERACTIVE option to mysql_real_connect().

interactive_timeout:
The number of seconds the server waits for activity on a noninteractive connection before closing it. This timeout applies only to TCP/IP and Unix socket file connections, not to connections made using named pipes, or shared memory.


使用道具 举报

回复
论坛徽章:
14
2011新春纪念徽章
日期:2011-04-02 17:01:062013年新春福章
日期:2013-02-25 14:51:24复活蛋
日期:2012-12-06 19:27:46ITPUB 11周年纪念徽章
日期:2012-10-09 18:16:00ITPUB 11周年纪念徽章
日期:2012-09-28 17:34:42紫蛋头
日期:2012-03-13 16:37:18灰彻蛋
日期:2012-02-06 14:20:122012新春纪念徽章
日期:2012-01-04 11:57:56灰彻蛋
日期:2011-12-26 14:20:13茶鸡蛋
日期:2011-12-20 15:00:13
4#
发表于 2011-12-9 11:25 | 只看该作者
确实没有找到相关的介绍,估计得去研究源码了,
楼下来解答

使用道具 举报

回复
论坛徽章:
10
2011新春纪念徽章
日期:2011-02-18 11:43:362013年新春福章
日期:2013-02-25 14:51:24ITPUB 11周年纪念徽章
日期:2012-10-09 18:08:15双黄蛋
日期:2012-04-18 13:03:23蛋疼蛋
日期:2012-02-14 09:01:14复活蛋
日期:2012-02-01 10:04:16双黄蛋
日期:2012-01-16 14:47:262012新春纪念徽章
日期:2012-01-04 11:53:29ITPUB十周年纪念徽章
日期:2011-11-01 16:23:26优秀写手
日期:2013-12-18 09:29:12
5#
发表于 2011-12-9 11:29 | 只看该作者
本帖最后由 justlooks 于 2011-12-9 11:29 编辑

问题3:是的
在sql_connect.cc文件中有这么句话,也就是说当你的调用有CLIENT_INTERACTIVE标记的时候wait_timeout会被interactive_timeout 复写

  1. 841   if (thd->client_capabilities & CLIENT_INTERACTIVE)
  2. 842     thd->variables.net_wait_timeout= thd->variables.net_interactive_timeout;
复制代码

至于为什么在配置文件中两者值不一致,启动MYSQL后会被改成一致,相关代码还没有找到

使用道具 举报

回复
招聘 : 其它语言研发
论坛徽章:
7
ITPUB十周年纪念徽章
日期:2011-11-01 16:25:222012新春纪念徽章
日期:2012-01-04 11:55:05ITPUB 11周年纪念徽章
日期:2012-10-09 18:13:33蛋疼蛋
日期:2013-02-18 16:32:512013年新春福章
日期:2013-02-25 14:51:242014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
6#
发表于 2012-2-20 18:23 | 只看该作者
本帖最后由 longxibendi 于 2012-2-20 18:52 编辑

问题1:这里为什么要同时设置interactive_timeout,wait_timeout的设置才会生效?
答:    不设置interactive_timeout,wait_timeout也会生效。
问题2:interactive的值如果设置的和wait_timeout不同,为什么Interactive_timeout会覆盖wait_timeout?
答:在交互模式下(CLIENT_INTERACTIVE),interactive_timeout才生效,非交互模式下,不生效。

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

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

答:如2所述,在交互模式下,interactive_timeout取代wait_timeout。这样,如果有的客户端是交互模式方式连接mysql server。那么客户端的timeout受制于interactive_timeout。如果有的客户端是非交互模式,长连接mysql server。那么客户端的timeout受制于wait_timeout。(是否是交互模式的连接,由客户端决定)




使用道具 举报

回复
论坛徽章:
14
2012新春纪念徽章
日期:2012-01-04 11:58:44 2014年世界杯参赛球队: 德国
日期:2014-05-30 12:58:23优秀写手
日期:2013-12-18 09:29:11凯迪拉克
日期:2013-11-19 14:35:20路虎
日期:2013-11-18 16:25:37灰彻蛋
日期:2013-05-31 08:48:322013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2012-11-13 11:23:38蜘蛛蛋
日期:2012-11-02 16:35:05奥运会纪念徽章:排球
日期:2012-07-10 09:51:40
7#
发表于 2012-6-28 18:06 | 只看该作者
这真是个好问题,我正好看官方文档的时候,看到这里,正好你的一些总结,解决我的一些疑问。

关于Wait_timeout=100
       Interactive_timeout=100

我觉得不能从官方文档的字面意思去解决。

我也没有找到什么根据性的理论和代码,但是我推测, Interactive_timeout应该是用来客户端连接到mysql的最大timeout时间,到了那个时间,用户自动就断开了,而wait就是等待用户断开后,才能进入尝试连接的选项。

要是真是这样的话,Interactive就必须比wait大了,如果用户抢占了这个资源还没有断开,那么等待的那个用户,就不得一直死等待了吗?结果到了100秒,还没有等待到,这个时候timeout到了,自己就放弃等待了。明显这样设计的话就不合理了。

哈哈,自己胡乱猜测,望批准指正。

使用道具 举报

回复
论坛徽章:
2
2013年新春福章
日期:2013-02-25 14:51:24ITPUB社区OCM联盟徽章
日期:2013-11-21 14:19:26
8#
发表于 2012-6-29 17:13 | 只看该作者
支持!!!!!!!!!

使用道具 举报

回复
论坛徽章:
0
9#
发表于 2012-7-5 10:32 | 只看该作者
学习了

使用道具 举报

回复
论坛徽章:
0
10#
发表于 2012-7-5 13:46 | 只看该作者
longxibendi 发表于 2012-2-20 18:23
问题1:这里为什么要同时设置interactive_timeout,wait_timeout的设置才会生效?
答:    不设置interacti ...

学习了

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表