MySQL和连接相关的timeout 的详细整理
MySQL和连接相关的timeout
前言:
今天同事问为什么查询mysql库时,在数据量比较大时,会话总断。刚开始以为是mysql的和连接有关timeout的问题,结果是网络的不稳定的原因。
下面总结下和连接有关的timeout
slave-net-timeout
Thenumberofsecondstowaitformoredatafromthemasterbeforetheslaveconsiderstheconnectionbroken,abortstheread,andtriestoreconnect.Thefirstretryoccursimmediatelyafterthetimeout.TheintervalbetweenretriesiscontrolledbytheMASTER_CONNECT_RETRYoptionfortheCHANGEMASTERTOstatement,andthenumberofreconnectionattemptsislimitedbythe--master-retry-countoption.Thedefaultis3600seconds(onehour).
当slave认为连接master的连接有问题时,就等待N秒,然后断开连接,重新连接master
net_read_timeout:
Thenumberofsecondstowaitformoredatafromaconnectionbeforeabortingtheread.Whentheserverisreadingfromtheclient,net_read_timeoutisthetimeoutvaluecontrollingwhentoabort
在终止读之前,从一个连接获得数据而等待的时间秒数;当服务正在从客户端读取数据时,net_read_timeout控制何时超时。
net_write_timeout:
Thenumberofsecondstowaitforablocktobewrittentoaconnectionbeforeabortingthewrite.Whentheserveriswritingtotheclient,net_write_timeoutisthetimeoutvaluecontrollingwhentoabort。
在终止写之前,等待多少秒把block写到连接;当服务正在写数据到客户端时,net_write_timeout控制何时超时
wait_timeout
Thenumberofsecondstheserverwaitsforactivityonanoninteractiveconnectionbeforeclosingit.
与服务器端无交互状态的连接,直到被服务器端强制关闭而等待的时间
interactive_timeout:
Thenumberofsecondstheserverwaitsforactivityonaninteractiveconnectionbeforeclosingit.
与服务器端无交互状态的连接,直到被服务器端强制关闭而等待的时间
connect_timeout
ThenumberofsecondsthatthemysqldserverwaitsforaconnectpacketbeforerespondingwithBadhandshake.Thedefaultvalueis10seconds.
等待一个连接响应的时间
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)地主动断开连接。
参考:
http://dev.mysql.com/doc/refman/5.5/en/server-system-variables.html
以上就是MySQL和连接相关的timeout的详细整理,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!