erro Pilões - 'servidor MySQL foi embora'

votos
13

[Espero que isso não é muito obscuro ... eu vou pedir o grupo de notícias se ninguém sabe aqui]

Estou usando Pilões (um quadro python) para servir uma aplicação web simples, mas parece morrer de vez em quando, com este no log de erro: (2006, 'MySQL server has gone away')

Eu fiz um pouco de verificação, e viu que isso era porque as ligações ao MySQL não estavam sendo renovada. Este não deve ser um problema, porém, porque o sqlalchemy.pool_recycleno arquivo de configuração deve mantê-lo automaticamente vivo. O padrão era 3600, mas eu marquei de volta para 1800devido a este problema. Isso ajudou um pouco, mas 3600 deve ficar bem de acordo com os docs. Os erros ainda acontecem semi-regularmente. Eu não quero para abaixá-lo muito embora e DOS minha própria :) banco de dados.

Talvez alguma coisa na minha configuração MySQL é pateta? Não tenho certeza para onde olhar exatamente.

Outros detalhes relevantes:

  Python 2.5
  Pylons: 0.9.6.2 (w/ sql_alchemy)
  MySQL: 5.0.51
Publicado 11/08/2008 em 20:59
fonte usuário
Em outras línguas...                            


2 respostas

votos
6

Acho que fixa-lo. É Acontece que eu tinha um erro de configuração simples. Meu arquivo ini leia-se:

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

O problema é que meu environment.pyarquivo declarou que o motor só iria mapear as teclas com o prefixo: sqlalchemy.defaultassim pool_recyclefoi ignorado.

A solução é simplesmente mudar a segunda linha nos ini para:

sqlalchemy.default.pool_recycle = 1800
Respondeu 05/09/2008 em 19:07
fonte usuário

votos
2

Você pode querer verificar as variáveis ​​de tempo limite do MySQL:

show variables like '%timeout%';

Você provavelmente está interessado em wait_timeout(menos provável mas possível: interactive_timeout). No Debian e Ubuntu, os padrões são 28800 (MySQL mata conexões depois de 8 horas), mas talvez o padrão para sua plataforma é diferente ou quem administra o servidor configurou as coisas de forma diferente.

AFAICT, pool_recyclenão realmente manter as conexões vivo, expira-los por conta própria antes de MySQL mata-los. Eu não estou familiarizado com postes, mas se fazendo com que as conexões para fazer intermitentemente um SELECT 1;é uma opção, que irá mantê-los vivos à custa de, basicamente, nenhuma carga do servidor e tráfego de rede mínimo. Um pensamento final: você está de alguma forma conseguindo usar uma conexão que postes pensa que expirou?

Respondeu 18/08/2008 em 22:35
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more