#### B.3.2.9 通信错误和中止的连接

[](<>)[](<>)[](<>)

如果出现连接问题，例如通信错误或连接中断，请使用以下信息源来诊断问题：

-   错误日志。看[第 5.4.2 节，“错误日志”](error-log.html).

-   一般查询日志。看[第 5.4.3 节，“一般查询日志”](query-log.html).

-   这`中止_*`xxx`*`和`连接错误_*`xxx`*`状态变量。看[第 5.1.10 节，“服务器状态变量”](server-status-variables.html).

-   主机缓存，可使用性能模式访问[`主机缓存`](performance-schema-host-cache-table.html)桌子。看[第 5.1.12.3 节，“DNS 查找和主机缓存”](host-cache.html)， 和[第 27.12.21.2 节，“主机\_缓存表”](performance-schema-host-cache-table.html).

    如果[`log_error_verbosity`](server-system-variables.html#sysvar_log_error_verbosity)系统变量设置为 3，您可能会在错误日志中找到如下消息：


```
[Note] Aborted connection 854 to db: 'employees' user: 'josh'
```

如果客户端甚至无法连接，服务器会增加[`Aborted_connects`](server-status-variables.html#statvar_Aborted_connects)状态变量。由于以下原因，可能会发生不成功的连接尝试：

-   客户端尝试访问数据库但没有权限。

-   客户端使用了错误的密码。

-   连接数据包不包含正确的信息。

-   它需要超过[`连接超时`](server-system-variables.html#sysvar_connect_timeout)秒获取连接数据包。看[第 5.1.8 节，“服务器系统变量”](server-system-variables.html).

    如果发生此类事情，则可能表明有人试图闯入您的服务器！如果启用了通用查询日志，则会将此类问题的消息记录到其中。

    如果客户端成功连接但后来不正确地断开连接或被终止，则服务器增加[`Aborted_clients`](server-status-variables.html#statvar_Aborted_clients)status 变量，并将 Aborted 连接消息记录到错误日志中。原因可能是以下任何一种：

-   客户端程序没有调用[`mysql_close()`](https://dev.mysql.com/doc/c-api/8.0/en/mysql-close.html)在退出之前。

-   客户已经睡了超过[`等待超时`](server-system-variables.html#sysvar_wait_timeout)要么[`交互超时`](server-system-variables.html#sysvar_interactive_timeout)秒而不向服务器发出任何请求。看[第 5.1.8 节，“服务器系统变量”](server-system-variables.html).

-   客户端程序在数据传输过程中突然结束。

    中止连接或中止客户端出现问题的其他原因：

-   这[`max_allowed_pa​​cket`](server-system-variables.html#sysvar_max_allowed_packet)变量值太小或查询需要的内存比您分配的更多[**mysqld**](mysqld.html).看[第 B.3.2.8 节，“数据包太大”](packet-too-large.html).

-   在 Linux 中使用以太网协议，半双工和全双工。一些 Linux 以太网驱动程序有这个错误。您应该通过在客户端和服务器机器之间使用 FTP 传输一个巨大的文件来测试这个错误。如果传输进入burst-pause-burst-pause 模式，您将遇到Linux 双工综合症。将网卡和集线器/交换机的双工模式切换为全双工或半双工，并测试结果以确定最佳设置。

-   导致读取中断的线程库问题。

-   配置错误的 TCP/IP。

-   以太网、集线器、交换机、电缆等出现故障。只有更换硬件才能正确诊断。

    也可以看看[第 B.3.2.7 节，“MySQL 服务器已消失”](gone-away.html).
