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