我们刚刚将现有的MySQL5.1数据库服务器升级到具有MySQL 5.5的更新(更好)的硬件,而且事情已经顺利进行了将近6个星期。
就在最近几天,我发现了一些错误,比如:
从MySQL的奴隶:
[ERROR]从服务器读取数据包时出错:查询期间与MySQL服务器的连接丢失(server_errno = 2013)
或从Apache /其他:
在'读取初始通信数据包'时丢失了与MySQL服务器的连接,系统错误:110
在今天晚上的某个时候,许多networking节点都在三分钟内报告了这个错误(许多这样的报告,因为这是繁忙的时期)。 但是,这些问题似乎并不符合任何极端负载的时间。 对于所有的意图和目的,MySQL上的连接/线程负载处于正常的速度(在大约10到40个连接的线程之间),并且在过去的几周内Web负载在很多时候都很高。
这些连接错误是否有其他原因,我没有看到?
Hooray,调整max_allowed_packetvariables,增加它的值并重新启动MySQL。 它将为MySQL提供读取数据包的主要能力。 试试看,并给我们一个反馈。
错误110是“连接超时”,这表明您的客户端和MySQL服务器之间的networking正在发生一些事情。 除了networking问题之外,如果服务器过度负载以响应传入连接,也可以看到这一点。
您可以尝试使用等待超时或连接超时,但这可能会掩盖根本问题。 你可能会有一个错误的查询,使MySQL进程堆叠起来。 检查(或启用)您的SQL慢日志。 运行mysqltuner来调整variables。 阅读mysql文档的调整MySQL部分,并确保您的指令是正常的。
编辑:在应用层,即PHP,你可以有PHP脚本死亡,如果它没有在一段时间内完成,通过调整max_execution_time指令