B.3.2.9 通信错误和中止的连接
如果出现通信错误或中断连接,使用以下信息来诊断问题:
-
错误日志。见第7.4.2节,“错误日志”。
-
通用查询日志。见第7.4.3节,“通用查询日志”。
-
状态变量
Aborted_
和xxx
Connection_errors_
。见第7.1.10节,“服务器状态变量”。xxx
-
主机缓存,可以使用性能chema中的host_cache 表。见第7.1.12.3节,“DNS查找和主机缓存”,和第29.12.22.3节,“主机缓存表”。
如果设置了log_error_verbosity
系统变量为3,您可能在错误日志中找到类似信息:
[Note] Aborted connection 854 to db: 'employees' user: 'josh'
如果客户端无法连接,服务器将增加Aborted_connects
状态变量。未成功的连接尝试可能是由于以下原因:
-
客户端尝试访问数据库,但没有对其的权限。
-
客户端使用错误的密码。
-
连接包不包含正确的信息。
-
获取连接包需要超过
connect_timeout
秒。请参阅第7.1.8节,“服务器系统变量”。
如果出现这些情况,可能是有人试图攻击你的服务器!如果常规查询日志启用,那些类型的问题将被记录到其中。
客户端成功连接后,但后来不当断开或被终止,服务器将增加Aborted_clients
状态变量,并将Aborted connection消息记录到错误日志中。可能的原因是:
-
客户端程序没有在退出前调用
mysql_close()
。 -
客户端睡眠超过
wait_timeout
或interactive_timeout
秒,未向服务器发送任何请求。请参阅第7.1.8节,“服务器系统变量”。 -
客户端程序在数据传输中突然结束。
其他导致连接中断或客户端中断的原因:
-
max_allowed_packet
变量值太小或查询需要分配的内存超过了对mysqld 的内存。请参阅第 B.3.2.8 节,“包太大”。 -
使用以太网协议与 Linux,双工和全双工。一些 Linux 以太网驱动程序存在这个 bug。你应该通过 FTP 在客户端和服务器机器之间传输一个巨大的文件来测试这个 bug。如果传输出现间断模式,你正在经历 Linux 双工综合症。将网络卡和交换机/集线器设置为双工或半双工,然后测试结果以确定最佳设置。
-
线程库的问题,导致读取中断。
-
TCP/IP 配置不正确。
-
故障的以太网、集线器、交换机、电缆等。这只能通过更换硬件来诊断。