【问题标题】:Frequent Mysql gone away (Error 2006) in production environment生产环境频繁出现Mysql消失(错误2006)
【发布时间】:2017-07-03 14:51:38
【问题描述】:

我在 django 1.10、python3.4、mysqlclient、mysql5.5 上运行一个网站。

我有多个管理命令在后台运行,用于不同时间的各种任务(如邮件发送、更新表)。最近,我开始看到许多 Mysql 消失了(错误 2006)。

我尝试将 connection_timeout 更改为大于 max_connection 年龄。这解决了一小部分问题,在大多数情况下,运行中的函数停止发生错误 2006,但在其他情况下,经常出现错误 2006。

在某些情况下,我在运行函数或将其放入 try - except 循环之前尝试使用 django.db.connection.close()。在那些地方,这个错误不再发生,但是我不能把这个 try-except 循环放在每个函数中。

这个重复错误Mysql消失的根本原因是什么?有哪些不同的解决方案,最好的解决方案是什么,这样我就不必更改很多代码?

其他变量:

我们从 django 1.7 升级到 1.10 并最近更新了 mysqlclient 包,之后问题可能浮出水面。

就在更新前后,我们网站的流量也增加了数倍。这会是一个触发器吗?

【问题讨论】:

    标签: mysql django python-3.x ubuntu-14.04


    【解决方案1】:

    正如在其他地方看到的,问题可能是您的查询太长,或者服务器由于不活动而关闭了连接。这在很大程度上取决于具体情况,但似乎如果您不在交易中(这将放弃第二种可能性),您可以应用类似于Hook available for automatic retry after deadlock in django and mysql setup

    【讨论】:

      猜你喜欢
      • 2012-02-25
      • 1970-01-01
      • 2012-06-28
      • 2011-12-18
      • 2012-11-23
      • 1970-01-01
      • 2012-05-15
      相关资源
      最近更新 更多