Question

J'ai une application rails que je sers de façon occasionnelle avec XML. Ceci est exécuté avec mongrel et mysql. J'ai constaté que si je n'exerce pas l'application pendant plus de quelques heures, elle disparaît et commence à générer des erreurs Errno :: EPIPE. Il semble que la connexion mysql soit dépassée pour l'inactivité ou quelque chose comme ça.

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 présente lorsqu'il travaillera de son côté (et je ne suis probablement pas là).

Ma question est la suivante:

  • Que puis-je faire pour éviter que ce problème ne se produise à la 1ère place? (par exemple, ne me passez pas le temps !!).
  • À défaut, y a-t-il un code que je peux insérer quelque part pour refaire automatiquement la connexion à la base de données?
Était-ce utile?

La solution

Voici une solution:

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

Les délais d’expiration de la solution ci-dessus me paraissent un peu élevés. Vous ne voulez pas que vos délais d'expiration de base de données soient trop faibles, en raison de la quantité de mémoire qu'une connexion peut utiliser. Si une connexion est orpheline, vous voulez qu’elle expire raisonnablement (pas dans une semaine).

Autres conseils

À d'autres endroits, j'ai également reçu les suggestions suivantes:

  1. Essayez le réglage config.active_record.verification_timeout à une valeur inférieure à celle de votre choix votre paramètre de délai de connexion mysql est.

  2. Il existe un 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".
    
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top