现在的位置: 首页 > 综合 > 正文

reading initial communication packet

2013年09月19日 ⁄ 综合 ⁄ 共 2627字 ⁄ 字号 评论关闭

这两天线上服务报了非常多的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说明天抓包分析一下,只能先这样了。

 

抱歉!评论已关闭.