代码之家  ›  专栏  ›  技术社区  ›  swilliams

挂架错误-“MySQL服务器已消失”

  •  14
  • swilliams  · 技术社区  · 17 年前

    我正在使用Pylons(一个python框架)为一个简单的web应用程序提供服务,但它似乎会时不时地消亡,错误日志中有这样的内容: (2006, 'MySQL server has gone away')

    我做了一些检查,发现这是因为MySQL的连接没有更新。但这不应该是个问题,因为 sqlalchemy.pool_recycle 在配置文件中,应自动使其保持活动状态。违约是 3600 1800 因为这个问题。这有点帮助,但是 应该

    也许我的MySQL配置中有些东西很傻?不知道该去哪里找。

    其他有关详情:

      Python 2.5
      Pylons: 0.9.6.2 (w/ sql_alchemy)
      MySQL: 5.0.51
    
    2 回复  |  直到 7 年前
        1
  •  8
  •   swilliams    17 年前

    我想我修好了。原来我有一个简单的配置错误。我的ini文件读取:

    sqlalchemy.default.url = [connection string here]
    sqlalchemy.pool_recycle = 1800
    

    environment.py 文件声明引擎将仅映射前缀为的键: sqlalchemy.default pool_recycle 被忽视了。

    sqlalchemy.default.pool_recycle = 1800
    
        2
  •  2
  •   Jon Bright    14 年前

    您可能需要检查MySQL的超时变量:

    show variables like '%timeout%';
    

    你可能对我感兴趣 wait_timeout interactive_timeout ).在Debian和Ubuntu上,默认值是28800(MySQL会在8小时后终止连接),但可能您的平台的默认值不同,或者服务器管理员的配置也不同。

    pool_recycle 实际上并不能使连接保持活动状态,它会在MySQL杀死连接之前自行终止连接。我不熟悉挂架,但是如果导致连接间歇性地执行 SELECT 1; 是一种选择,它将以基本上没有服务器负载和最小网络流量为代价使它们保持活力。最后一个想法是:您是否设法使用了一个挂架认为已过期的连接?