MySQL报错:Got an error reading communication packets

news2025/2/24 17:51:24

error reading 关闭连接

通常一旦连接建立,MySQLD端的线程会堵塞在poll上,而poll的就是连接socket的fd,等待读取命令,也就是读取MySQL net packet的header。同时如果是poll timeout超时则设置为SOCKET_ETIMEDOUT 这就是我们平时说的wait_timeout参数如下:

net_read_packet_header
 ->net_read_raw_loop
   ->vio_read
     ->vio_socket_io_wait
       ->vio_io_wait
         -> poll

net_read_raw_loop会循环读取需要的字节数量,而MySQL net packet就是4个字节,一旦poll检测到数据达到,则会从vio_socket_io_wait中return 0,然后调用mysql_socket_recv从socketfd中读取数据。如果read socket读取到为0字节,那么通常代表是客户端发送了fin包,注释如下:

/* Zero indicates end of file. */

这个时候因为没有读取到预期的4字节,那么就会进入判定流程,如果不是
SOCKET_ETIMEDOUT,也就是不是poll超时,那么就会报错ER_NET_READ_ERROR也就是看到的read error,如果是超时就是read timeout,对应的错误如下:

  • Got an error reading communication packets

最终会error层层返回后在handle_connection函数中调用close关闭socket,返回客户端fin包。这种情况通常当应用crash,操作系统会帮应用发送最后的fin包,但是这个时候不会有COM_QUIT包,测试可以直接kill -9 mysql客户端进行就可以了,

2023-05-10T03:02:46.728236Z 5 [Note] Aborted connection 5 to db: 'unconnected' user: 'root' host: 'mgr1' (Got an error reading communication packets)
2023-05-10T03:03:11.466218Z 6 [Note] Aborted connection 6 to db: 'unconnected' user: 'root' host: 'mgr1' (Got an error reading communication packets)
2023-05-10T03:04:19.929097Z 7 [Note] Aborted connection 7 to db: 'unconnected' user: 'root' host: 'mgr1' (Got an error reading communication packets)
2023-05-10T03:04:56.230077Z 8 [Note] Aborted connection 8 to db: 'unconnected' user: 'root' host: 'mgr1' (Got an error reading communication packets)

抓包如下,

正常关闭连接

正常的关闭连接会poll会检测到有包到达,且read socket读取到的为
COM_QUIT的包,会正常终止socket连接,并且终止之前不可能再去poll操作和read socket fd了,如下

  case COM_QUIT:
    /* We don't calculate statistics for this command */
    query_logger.general_log_print(thd, command, NullS);
    // Don't give 'abort' message
    // TODO: access of protocol_classic should be removed
    if (thd->is_classic_protocol())
      thd->get_protocol_classic()->get_net()->error= 0;
    thd->get_stmt_da()->disable_status();       // Don't send anything back
    error=TRUE;                 // End server
    break;

也就是不在进行socket通道的poll和read操作,自然不会在读取包了。在handle_connection函数中调用close关闭socket,返回客户端fin包。
这个时候会发现有COM_QUIT包,抓包如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/527206.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ResNet 原论文及原作者讲解

ResNet 论文摘要1. 引入2. 相关工作残差表示快捷连接 3. 深度残差学习3.1. 残差学习3.2. 快捷恒等映射3.3. 网络体系结构普通网络 plain network残差网络 residual network 3.4. 实施 4. 实验4.1. ImageNet分类普通的网络 plain network残差网络 residual network恒等vs.快捷连…

ribbon的使用

什么是ribbon Ribbon是Netflix公司提供的一个基于HTTP和TCP的客户端负载均衡工具。 Spring Cloud Ribbon是基于Netflix Ribbon 实现的一套客户端的负载均衡工具,Ribbon客户端组件提供一系列的完善的配置,如超时,重试等。通过Load Balancer获取…

随笔:mysql的主主同步

背景: nginx负载均衡和双击热备下,要求支持mysql的test库的主主同步,同时需要豁免特定的三张配置表。 实现步骤: 1. 查看防火墙是否是关闭状态。systemctl status firewalld 2. 修改配置,增加以下内容。vi /etc/my.cnf…

利用Github Action备份Docker容器中的数据库

利用Github Action备份Docker容器中的数据库 本文方案仅供技术参考与娱乐! 前言 数据很重要,所以我们要经常备份。 那么怎么备份呢?假如我们使用云厂商的数据库,里面已经自带了快照和备份功能了,只要你愿意花钱&…

golang 使用 OpenTelemetry 实现跨服务 全链路追踪

使用 OpenTelemetry 链路追踪说明 工作中常常会遇到需要查看服务调用关系,比如用户请求了一个接口接口会调用其他grpc,http接口,或者内部的方法这样的调用链路,如果出现了问题,我们需要快速的定位问题,这时候就需要一个工具来帮助我们查看调用链路OpenTelemetry就是这样一个工…

力扣总结,深度优先题

LCP 67. 装饰树 –链接– 中等 10 相关企业 力扣嘉年华上的 DIY 手工展位准备了一棵缩小版的 二叉 装饰树 root 和灯饰,你需要将灯饰逐一插入装饰树中,要求如下: 完成装饰的二叉树根结点与 root 的根结点值相同 若一个节点拥有父节点&#x…

用Java开发的建站神器JPress

什么是 JPress ? JPress 是一个使用 Java 开发的、类似 WordPress 的产品,支持多站点、多语种自动切换等。(JPress 始于2015 年) 目前已经有 10w 网站使用 JPress 进行驱动,其中包括多个政府机构,200 上市公…

HashMap 扰动函数、负载因子、扩容链表拆分

文章目录 1.扰动函数2.初始容量3.负载因子4.扩容链表拆分 1.扰动函数 在jdk8中,hashmap有这样一段代码,他叫扰动函数,目的是优化散列效果 static final int hash(Object key) {int h;return (key null) ? 0 : (h key.hashCode()) ^ (h &…

初识Java多线程编程

文章目录 一、线程的状态二、线程的常见属性三、多线程编程Thread类常用构造方法1.继承Thread类2.实现Runnable接口3.匿名内部类实现4.lambda 表达式创建 Runnable 子类对象 四、线程的常见方法 一、线程的状态 //线程的状态是一个枚举类型 Thread.State public class ThreadS…

【C语言】结构体——基础篇

结构体 为什么需要结构体?结构体类型的定义结构体变量结构体变量的定义结构体变量的引用结构体变量的初始化 结构体嵌套 为什么需要结构体? 💫首先,来举一个例子看一下为什么需要结构体。   在学籍管理系统中,要存储…

驱动开发:内核远程堆分配与销毁

在开始学习内核内存读写篇之前,我们先来实现一个简单的内存分配销毁堆的功能,在内核空间内用户依然可以动态的申请与销毁一段可控的堆空间,一般而言内核中提供了ZwAllocateVirtualMemory这个函数用于专门分配虚拟空间,而与之相对应…

MATLAB绘制动画(二)擦除动画

如果我们在绘制图形之后将原有的图形擦除,并重新绘制,看上去就像动画了 示例: t 0; m [sin(t);cos(t)]; p plot(t,m,EraseMode,background,MarkerSize,5); x -1.5*pi; axis([x x2*pi -1.5 1.5]); grid onfor i 1:100t [t 0.1*i];m [m [sin(0.1*i…

【LeetCode: 97. 交错字符串 | 暴力递归=>记忆化搜索=>动态规划 | 位置对应】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

校园安全,一键报警主机助力保障

校园安全,一键报警主机助力保障 随着社会发展和科技进步,校园安全问题日益受到重视。如何保障师生们的安全成为了学校一项重要任务。而校园可视一键报警主机就是一种非常有效的安保设备。 这种报警主机集合了视频监控、安全防范、数据处理等多个功能&a…

asm 加盘 udev 重启 导致网络异常

Network interface going down when dynamically adding disks to storage using udev in RHEL 6 (Doc ID 1569028.1)正在上传…重新上传取消To Bottom In this Document APPLIES TO: Oracle Database - Enterprise Edition - Version 11.2.0.3 and later Oracle Net Servi…

阿里国际、Lazada、eBay如何提高转化率?测评养号优化方式是什么

转化率是卖家在分析复盘时非常关键的因素,转化率的高低直接影响着卖家目前的关键词listing或者商品描述是否符合,消费者的满意度。 1.调查获客,明确分析市场需求 这是在产品上架之前必须明确的重要环节。如果市场上对于一个产品接受率低&am…

ChatGPT有中文版吗?

2023年最热的技术话题是什么?毫无疑问是人工智能,特别是AIGC领域。其中又以ChatGPT为最热门产品。ChatGPT是一个革命性的人工智能产品,能对我们的生产生活产生巨大的影响。然而,有网友担心ChatGPT是西方开发的AI工具,能…

若依管理系统RuoYi-Vue:登录和鉴权的实现

文章目录 摘要spring-boot-starter-security验证码生成是否开启验证码配置验证码类型CaptchaController的getCode来生成验证码 用户登录SysLoginController的login验证登录是否正确用户名密码是否正确Spring Security 的用户名密码验证机制在SecurityConfig中配置PasswordEncod…

聚观早报|恒大公告许家印成被执行人;特斯拉回应召回超百万辆车

今日要闻:恒大公告:许家印成被执行人;特斯拉回应召回超百万辆车;ChatGPT联网插件下周开放票;天翼物联发布首个3AZ亿级物联网平台;苹果MR头显功能预计远超竞争对手 恒大公告:许家印成被执行人 12…

【沐风老师】3DMAX一键种草插件GrassScatter使用方法详解

GrassScatter for 3dMax一键种草插件使用教程 3DMAX一键种草插件GrassScatter,用于控制草的创建和散布,快速生成草坪! 【版本要求】 3dMax2012及更高版本 【安装方法】 方法一:本插件无需安装,使用时直接拖动插件脚…