当前位置: 代码迷 >> 综合 >> reading initial communication packet
  详细解决方案

reading initial communication packet

热度:91   发布时间:2024-01-13 01:26:54.0

这两天线上服务报了非常多的Error,具体内容如下:

SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial communication packet', system error: 104

 

DBA说没有找到MySQL错误日志,网上搜索了一圈也没有找到满意答案。只好自己动手查MySQL源码,查到如下代码:

 

./libmysql/client.c

继续跟cli_safe_read函数,是这么定义的:

注释是我添加的,继续往下跟my_net_read函数,函数在libmysql/net.c 中,有点长,不全贴出来了。

在my_net_read函数中,有几种情况会报error:

  • 啥也没读到,会重试,重试也不行,会报:ER_NET_FCNTL_ERROR、ER_NET_READ_INTERRUPTED或者ER_NET_READ_ERROR
  • 读到了,但是package有问题,会报:ER_NET_PACKETS_OUT_OF_ORDER
  • 之后在net_realloc的时候,还会报两种错误。

 没有环境权限、没法复现,dba说明天抓包分析一下,只能先这样了。

 

  相关解决方案