2008-09-25 6 views
0

J'ai une application rails qui me permet de diffuser du code XML peu fréquemment. Ceci est en cours d'exécution avec mongrel et mysql. J'ai découvert que si je n'exerce pas l'application pendant plus de quelques heures, elle disparaît et commence à émettre des erreurs Errno :: EPIPE. Il semble que la connexion mysql soit temporisée pour inactivité ou quelque chose comme ça.Prévention de Mongrel/Mysql Errno :: Exceptions EPIPE

Il peut être redémarré avec 'mongrel_rails restart -P /path/to/the/mongrel.pid' ... mais ce n'est pas vraiment une solution. Mon collaborateur s'attend à ce que l'application soit là quand il travaille de son côté (et je ne suis probablement pas là).

Ma question est:

  • Que puis-je faire pour éviter ce problème de se produire dans la 1ère place? (Par exemple, ne me prends pas le temps !!).
  • A défaut, y a-t-il un code que je peux insérer quelque part pour refaire automatiquement la connexion Db?

Répondre

1

Voici une solution:

https://boxpanel.blueboxgrp.com/public/the_vault/index.php/Mongrel_/_MySQL_Timeout

Les délais d'attente sur la solution ci-dessus semblent un peu élevé pour moi. Vous ne voulez pas que vos délais d'attente de base de données soient trop bas, en raison de la quantité de mémoire qu'une connexion peut utiliser. Si une connexion est devenu orphelin, vous voulez qu'il expirer raisonnable (. Pas comme dans une semaine)

0

Dans d'autres endroits, j'ai aussi reçu les suggestions suivantes:

  1. Essayez le réglage config.active_record .verification_timeout à un niveau inférieur à celui votre paramètre de délai d'attente de connexion mysql est.

  2. Il y a un petit bijou pour contourner ce problème: mysql_retry_lost_connection

    http://rubyforge.org/projects/zventstools/ 
    "Reconnect to the MySQL server when you hit a lost connection error". 
    
Questions connexes