设为首页收藏本站

LinuxTone | 运维专家网论坛 - 最棒的Linux运维与开源架构技术交流社区!

 找回密码
 注册

QQ登录

只需一步,快速开始

#公告#抱歉,网站将关闭,不再开放。由于PC时代已远逝 。在这个后移动互联网时代,我们继续携手前行,保持对技术的热情。共同构建linuxtone知识星球欢迎加入,一起讨论技术、招聘人才、分享资源。请新老linuxtone人 扫码移步到 知识星球:linuxtone

学习是一种信仰!分享是一种快乐!能力= 心态 * 沟通 * 知识 (你的每一天需要正能量!)

 网站的发展需要你贡献一份力量!希望你能每天坚持看贴1小时,并回答网友的问题!祝你在浏览论坛的过程中取得进步!谢谢!linuxtone加油!大家加油! 友情提示: 你今天学习了吗?你今天进步了吗?少一点抱怨!多一点进步!Life is short ! Why not linuxtone ?  

网站的发展、感谢每位坛友的努力!

查看: 3260|回复: 3

[MySQL管理] MySQL Timeout解析 [复制链接]

Rank: 7Rank: 7Rank: 7

签到
27
注册时间
2008-6-1
最后登录
2017-9-11
在线时间
152 小时
阅读权限
100
积分
2894
帖子
309
主题
39
精华
5
UID
35

LT同学

发表于 2010-5-9 19:55:54 |显示全部楼层
转自http://www.ourmysql.com/archives/810


“And God said, Let there be network: and there was timeout”
在使用MySQL的过程中,你是否遇到了众多让人百思不得其解的Timeout?
那么这些Timeout之后,到底是代码问题,还是不为人知的匠心独具?
本期Out-man,讲述咱们MySQL DBA自己的Timeout。
先看一下比较常见的Timeout参数和相关解释:
connect_timeout
The number of seconds that the mysqld server waits for a connect packet before responding with Bad handshake.
interactive_timeout
The number of seconds the server waits for activity on an interactive connection before closing it.
wait_timeout
The number of seconds the server waits for activity on a noninteractive connection before closing it.
net_read_timeout
The number of seconds to wait for more data from a connection before aborting the read.
net_write_timeout
The number of seconds to wait for a block to be written to a connection before aborting the write.
从以上解释可以看出,connect_timeout在获取连接阶段(authenticate)起作用,interactive_timeout和wait_timeout在连接空闲阶段(sleep)起作用,而net_read_timeout和net_write_timeout则是在连接繁忙阶段(query)起作用。
获取MySQL连接是多次握手的结果,除了用户名和密码的匹配校验外,还有IP->HOST->DNS->IP验证,任何一步都可能因为网络问题导致线程阻塞。为了防止线程浪费在不必要的校验等待上,超过connect_timeout的连接请求将会被拒绝。
即使没有网络问题,也不能允许客户端一直占用连接。对于保持sleep状态超过了wait_timeout(或interactive_timeout,取决于CLIENT_INTERACTIVE标志)的客户端,MySQL会主动断开连接。
即使连接没有处于sleep状态,即客户端忙于计算或者存储数据,MySQL也选择了有条件的等待。在数据包的分发过程中,客户端可能来不及响应(发送、接收、或者处理数据包太慢)。为了保证连接不被浪费在无尽的等待中,MySQL也会选择有条件(net_read_timeout和net_write_timeout)地主动断开连接。
这么多Timeout足以证明MySQL是多么乐于断开连接。而乐于断开连接的背后,主要是为了防止服务端共享资源被某客户端(mysql、mysqldump、页面程序等)一直占用。

Rank: 6Rank: 6

注册时间
2008-6-13
最后登录
2014-8-6
在线时间
219 小时
阅读权限
70
积分
8688
帖子
971
主题
181
精华
0
UID
74

LT粉丝

发表于 2010-5-10 09:37:49 |显示全部楼层
学习了!多谢! 那如何设置一个合现的time_out值是,那些参数和time out相关,期待楼主继续讲解!

使用道具 举报

Rank: 7Rank: 7Rank: 7

注册时间
2008-6-1
最后登录
2017-9-11
在线时间
152 小时
阅读权限
100
积分
2894
帖子
309
主题
39
精华
5
UID
35

LT同学

发表于 2010-5-10 09:52:05 |显示全部楼层
回复 2# nginxman


    一般我们会配置 interactive_timeout和 wait_timeout这两个参数,直接在my.cnf里面配置就可以了

这两个参数配置还主要看你的程序,,对于短连接,不要设置太长时间,如果是长连接,可以设置长一些。

使用道具 举报

Rank: 7Rank: 7Rank: 7

注册时间
2008-11-27
最后登录
2019-3-21
在线时间
208 小时
阅读权限
100
积分
6501
帖子
772
主题
367
精华
4
UID
632

LT同学

发表于 2010-5-10 10:00:07 |显示全部楼层
interactive_timeout和 wait_timeout:服务器关闭连接前等待活动的秒数,
我们平时的客户端都是非交互式的,每次会话时间都是由 wait_timeout 来控制, 每次连接, wait_timeout 都被初始化为 interactive_timeout 的值,但是可以通过set wait_timeout=10 来更改本次会话的活动时间.
http://hi.baidu.com/ytjwt/

使用道具 举报

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

IT运维专家网感谢您的支持

合作联系: QQ:67888954/MSN:cnseek@msn.com/mail:netseek@linuxtone.org

Archiver|手机版|感谢所有关心和支持过LinuxTone的朋友们 转载本站内容请注明原作者名及出处 ( 京ICP备08103151 )   |

GMT+8, 2020-5-29 14:07 , Processed in 0.020199 second(s), 14 queries , Apc On.

Powered by Discuz! X2 Licensed

© 2001-2011 Comsenz Inc.

回顶部