通信错误和连接异常终止
如果发生连接问题,例如通信错误或连接中断,请使用以下信息来源来诊断问题:
- 错误日志。请参见“MySQL服务器错误日志”。
- 常规查询日志。请参见“mysqldumpslow 汇总慢查询日志文件”。
- 该和状态变量。请参见“服务器状态变量”。
Aborted_xxx
Connection_errors_xxx
- 主机缓存,可以使用“性能模式”
host_cache
表进行访问。请参见“ DNS查找优化和主机缓存”和“ host_cache表”。
如果log_error_verbosity
系统变量设置为3,则可能会在错误日志中找到以下消息:
[Note] Aborted connection 854 to db: 'employees' user: 'josh'
如果客户端甚至无法连接,服务器将增加Aborted_connects
状态变量。由于以下原因,可能会导致连接尝试失败:
- 客户端尝试访问数据库,但没有访问权限。
- 客户端使用了错误的密码。
- 连接数据包不包含正确的信息。
connect_timeout
获取连接数据包需要花费几秒钟的时间。请参见“服务器系统变量”。
如果发生此类情况,则可能表明有人试图闯入您的服务器!如果启用了常规查询日志,则会将有关这些类型问题的消息记录到该日志中。
如果客户端成功连接,但后来断开不正确或终止,则服务器将递增Aborted_clients
状态变量,并将异常终止连接消息记录到错误日志中。原因可能是以下任何一种:
- 客户端程序
mysql_close()
在退出前未调用。 - 客户端在没有向服务器发出任何请求的情况下休眠了超过
wait_timeout
或interactive_timeout
几秒钟。请参见“服务器系统变量”。 - 客户端程序在数据传输过程中突然结束。
连接中止或客户端中止的问题的其他原因:
- 该
max_allowed_packet
变量的值太小或查询需要比你分配更多的内存的mysqld。请参见第B.4.2.9节“数据包太大”。 - 在半双工和全双工的Linux上使用以太网协议。某些Linux以太网驱动程序存在此错误。您应该通过在客户端计算机和服务器计算机之间使用FTP传输大文件来测试此错误。如果传输以“突发-暂停-突发-暂停”模式进行,则您正在遇到Linux双工综合症。将网卡和集线器/交换机的双工模式都切换为全双工或半双工,然后测试结果以确定最佳设置。
- 线程库出现问题,导致读取中断。
- 配置错误的TCP / IP。
- 以太网,集线器,交换机,电缆等故障。仅通过更换硬件才能正确诊断。
另请参见第B.4.2.8节“ MySQL服务器已消失”。