doctrine-orm之Gearman、ZF2、Doctrine2、MySQL、SQLSTATE[HY000] : General error: 2006 MySQL server has gone away

telwanggs 阅读:166 2025-02-15 21:57:57 评论:0

我使用 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) 我禁用了除 3 之外的所有 Gearman 工作和工作人员进行测试。我清理了 Gearman 队列并重新启动了 Gearman 服务器和 Gearman 工作人员。但这对我没有帮助。

4) 我为 MySQL 启用了这些设置:
max_allowed_pa​​cket = 500M
   max_connections      = 2000 
   max_user_connections = 300 
   wait_timeout         = 3600 
   net_read_timeout     = 3600 

有人可以帮忙吗?
谢谢!

请您参考如下方法:

每个工作脚本应该在开始时连接到数据库并在结束时断开连接。不要试图保持打开连接,好像 MySQL 超时一样,那么您的脚本将不会注意到这就是为什么您会收到错误的原因。


标签:mysql
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号