mysql检测网络断开_MySQL文档阅读笔记之网络通信问题及中断的数据库连接

本文介绍了MySQL数据库在遇到网络通信问题时的诊断方法,包括检查error log、general query log、status变量和host cache。当连接中断时,可能是应用未正确关闭连接、连接超时或应用异常中止。而连接建立失败则可能因权限、口令错误、非法数据或连接超时等。此外,还提到了可能的其他原因,如max_allowed_packet大小、网络问题、线程库Bug和操作系统配置。建议管理员关注可能的DoS攻击,并排查上述因素。
摘要由CSDN通过智能技术生成

MySQL侧的诊断信息

当应用与MySQL数据库之间的通信出现问题比如连接错误或者异常中断时,可以通过查看如下信息来帮助问题诊断:

MySQL数据库运行期产生的error log。

MySQL数据库在响应外部请求时产生的general query log。

使用show status命令查看Aborted_xxx和Connection_errors_xxx变量的值。

检查host cache。

连接中断的现象及原因

如果客户应用与MySQL数据库在应用层成功的建立了通信链接,但未使用正确的方式关闭连接或者客户应用异常中止,那么MySQL数据库将增大Aborted_clients变量的值,并将这次事件写入error log。

可能的原因如下:

客户应用退出前未调用方法来关闭数据库连接。

客户应用与MySQL数据库之间建立的数据库连接长时间闲置,超出wait_timeout或者interactive_timeout变量定义的时间值,导致连接被MySQL数据库自动关闭。

在客户应用与MySQL数据库交换数据的过程中,客户应用突然异常中止。

连接建立不成功的现象及原因

如果客户应用无法成功的与MySQL数据库建立连接,或者说无法成功得到数据库连接对象,那么MySQL数据库将会增大Aborted_connects变量的值,同时将把相关信息记录至general query log中。

可能的原因如下:

客户应用没有获取访问MySQL数据库的特权。

客户应用访问MySQL数据库时使用了错误的口令。

客户应用使用数据库连接向MySQL数据库传递数据时,报文中包含了非法的信息。

客户应用与MySQL数据库建立连接时,超出connect_timeout变量定义的时长后,仍然无法得到连接创建的报文。直白的解释,当TCP层三次握手成功之后,MySQL数据库等待至多connect_timeout变量定义的时长,如果仍然无法收到客户应用发送的建立数据库连接的请求,那么将回复Bad handshake,同时关闭连接。

MySQL数据库的管理员要特别关注此类问题,确认MySQL数据库是否受到了外部的攻击,比如DoS。

其它可能的原因

排除了前述的原因,那么需要进一步确认是否存在如下的问题。

对于当前应用场景,max_allowed_packet变量的值过小,无法满足需要;或者查询请求需要的内存资源比较大,当前MySQL数据库的参数配置不能满足需要。

网络问题,比如驱动的bug或者网络设备的配置问题。这时可以在客户应用及MySQL数据库所在的设备上执行大文件传输,确认双向的传输速率是否符合预期。

底层线程库的Bug,影响并发读操作。

操作系统的TCP/IP配置不正确或者低效。

网络硬件问题,比如网卡、交换机、路由器工作不正常。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值