Vra

Ek gebruik Pilone (a luislang raamwerk) om 'n eenvoudige web-program dien, maar dit lyk soos van tyd tot sterwe tot tyd, met hierdie in die fout log: (2006, 'MySQL server has gone away')

Ek het 'n bietjie van kontrole, en sien dat dit was omdat die verbindings na MySQL is nie vernuwe. Dit moet 'n probleem nie al nie, want die sqlalchemy.pool_recycle in die opstelling lêer outomaties lewendig moet hou nie. Die standaard was 3600, maar ek geskakel dit terug na 1800 as gevolg van hierdie probleem. Dit het gehelp 'n bietjie, maar 3600 moet goed wees volgens die dokumente. Die foute nog gebeur semi-gereeld. Ek wil nie dit te verlaag te veel al is en DOS my eie databasis.)

Miskien iets in my MySQL config is stom? Nie seker waar om presies te kyk.

Ander tersaaklike besonderhede is:

  Python 2.5
  Pylons: 0.9.6.2 (w/ sql_alchemy)
  MySQL: 5.0.51
Was dit nuttig?

Oplossing

Ek dink ek vaste dit. Dit blyk ek het 'n eenvoudige config fout. My ini lêer lees:

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

Die probleem is dat my environment.py lêer verklaar dat die enjin sou net kaartsleutels met die voorvoegsel:. sqlalchemy.default so pool_recycle is geïgnoreer

Die oplossing is om eenvoudig verander die tweede lyn in die ini om:

sqlalchemy.default.pool_recycle = 1800

Ander wenke

Jy mag dalk wil om te MySQL se timeout veranderlikes te gaan:

show variables like '%timeout%';

Jy is waarskynlik belangstel in wait_timeout (minder geneig maar moontlik: interactive_timeout). Op Debian en Ubuntu, die standaard is 28800 (MySQL dood verbindings na 8 ure), maar miskien die verstek vir jou platform is anders of wie ook al administreer die bediener het dinge anders ingestel.

afaict, pool_recycle nie eintlik hou die verbindings in die lewe, dit verval hulle op sy eie voor MySQL hulle doodslaan. Ek is nie vertroud is met maste, maar as die oorsaak van die verbindings na tussenposes doen 'n SELECT 1; is 'n opsie, sal dit die lewe te bly by die koste van basies geen bediener laai en 'n minimale netwerk verkeer. 'N laaste gedagte: Is jy een of ander manier die bestuur van 'n verbinding wat maste dink dit verstryk gebruik

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top