可能的原因: 1、网络问题,网络是否存在问题,花费了超过 connect_timeout 的时间去得到一个数据包 2、账号密码是否正确 3、客户端是否有权限连接该数据库 4、连接包是不是有带有正确的信息 5、Aborted Connection一般出来的情况都是网络不好,客户端异常crash之类的,总之就是连接打开之后没有正常的关闭
如果都不是上面的问题,可以尝试加大max_allowed_packet_size( max_allow_packet=256M),或者使用php的短连接,不使用长连接,再或者每次查询完成后关闭连接, 避免The client had been sleeping more than wait_timeout or interactive_timeout seconds without issuing any requests to the server.(客户端连接休眠时间超过wait_timeout,interactive) 实在没招了,可以启用general query log,把所有查询的sql都列出来。 还是解决不了,就是更底层的原因了,网络设备故障等等。
模拟:在linux下打开多个客户端,每个客户端登录mysql,然后我们在其中的一个linux客户端下,强制kill其他mysql客户端登录进程,同时监控error_log情况,即可出现上面日志情况。
参考:http://dev.mysql.com/doc/refman/5.5/en/communication-errors.html