【发布时间】:2015-01-23 14:18:18
【问题描述】:
我使用 ZF2、Doctrine2、MySQL、Gearman。 Gearman 工作时周期性报错:
SQLSTATE[HY000]:一般错误:2006 MySQL 服务器已消失。
我尝试了以下步骤来解决问题:
1) 我调查了 MySQL 查询。 查询没有任何问题。它很简单(没有子查询)而且速度很快。 例如,这是 MySQL 服务器消失时查询之一的 EXPLAIN。
+-------------+-------+-------+-----------------------+-----------------------+---------+-------+------+
| select_type | table | type | possible_keys | key | key_len | ref | rows |
+-------------+-------+-------+-----------------------+-----------------------+---------+-------+------+
| SIMPLE | t0 | const | UNIQ_8D93D649E7927C74 | UNIQ_8D93D649E7927C74 | 767 | const | 1 |
| SIMPLE | t13 | const | UNIQ_BA388B79395C3F3 | UNIQ_BA388B79395C3F3 | 5 | const | 1 |
+-------------+-------+-------+-----------------------+-----------------------+---------+-------+------+
2) 我尝试了this post 的版本(用于重新连接到数据库)但这对我没有帮助。我的一些查询丢失了。
3) 我禁用了所有 Gearman 作业和工人,除了 3 进行测试。我清理了 Gearman 队列并重新启动 Gearman 服务器和 Gearman 工作人员。但这对我没有帮助。
4) 我为 MySQL 启用了这些设置: max_allowed_packet = 500M
max_connections = 2000
max_user_connections = 300
wait_timeout = 3600
net_read_timeout = 3600
有人可以帮忙吗? 谢谢!
【问题讨论】:
-
可以看看MySQL慢查询日志有什么线索吗?这通常发生在数据库繁忙、运行备份、转储或类似情况时。
-
我清理了我的数据库。数据库只有 5 行用于测试并且我关闭了转储。没用
-
不管怎样,你启用了 MySQL 慢查询日志,有什么问题吗?或者查看 MySQL 文档,它看起来像数据库问题 - dev.mysql.com/doc/refman/5.5/en/gone-away.html
-
“消失”错误意味着与数据库的连接已超时。这在处理长时间运行的作业时很常见。要修复它,只需在工作开始时重新连接到数据库。
标签: doctrine-orm zend-framework2 gearman