我们刚刚将现有的 MySQL5.1 DB 服务器升级为带有 MySQL 5.5 的更新(更好)的硬件,近 6 周以来一切进展顺利。
就在过去的几天里,我注意到了一些错误,例如:
从 MySQL 从服务器:
[错误] 从服务器读取数据包时出错:查询期间与 MySQL 服务器失去连接(server_errno=2013)
或者来自 Apache/其他:
在“读取初始通信包”时与 MySQL 服务器失去连接,系统错误:110
今天晚上的某个时刻,许多网络节点报告了此错误,持续了三分钟(许多此类报告都是在繁忙时段发生的)。但是,这些问题似乎与极端负载无关。实际上,MySQL 上的连接/线程负载处于正常速率(大约 10 到 40 个连接线程),而过去几周,网络负载有时会高得多。
这些连接错误是否还有其他我没有发现的原因?
答案1
太棒了,调整 max_allowed_packet 变量,增加其值并重新启动 MySQL。它将为 MySQL 提供读取数据包的主要能力。尝试一下并给我们反馈。
答案2
错误 110 是“连接超时”,这表明客户端和 MySQL 服务器之间的网络出现了问题。除了网络问题之外,如果服务器超负荷而无法响应传入的连接,您也可能会遇到这种情况。
答案3
您可以尝试增加 wait-timeout 或 connect-timeout,但这可能会掩盖根本问题。您可能有一个错误的查询使 mysql 进程堆积起来。检查(或启用)您的 sql 慢日志。运行 mysqltuner 以调整可能的变量。阅读 mysql 文档的调整 mysql 部分,并确保您的指令是合理的。
编辑:在应用程序层,即 php,如果 php 脚本在一段时间内没有完成,可以通过调整 max_execution_time 指令让其终止运行