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