Pregunta

Tengo una aplicación de rieles a la que le sirvo XML con poca frecuencia. Esto se está ejecutando con mongrel y mysql. Descubrí que si no uso la aplicación durante más de unas pocas horas, se desactiva y comienza a lanzar errores Errno :: EPIPE. Parece que la conexión mysql se agotó por inactividad o algo así.

Se puede reiniciar con 'mongrel_rails restart -P /path/to/the/mongrel.pid' ... pero eso no es realmente una solución. Mi colaborador espera que la aplicación esté allí cuando él esté trabajando por su parte (y lo más probable es que no esté cerca).

Mi pregunta es:

  • ¿Qué puedo hacer para evitar que este problema ocurra en primer lugar? (por ejemplo, ¡no me dejes fuera!).
  • Si falla eso, ¿hay algún código que pueda insertar en algún lugar para rehacer automáticamente la conexión Db?
¿Fue útil?

Solución

Aquí hay una solución:

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

Los tiempos de espera en la solución anterior me parecen un poco altos. No desea que los tiempos de espera de su base de datos sean demasiado bajos, debido a la cantidad de memoria que puede usar una conexión. Si una conexión queda huérfana, desea que el tiempo de espera sea razonable (como no en una semana).

Otros consejos

En otros lugares, también recibí las siguientes sugerencias:

  1. Prueba de configuración config.active_record.verification_timeout a algo más bajo que cualquier otra cosa la configuración del tiempo de espera de su conexión mysql es.

  2. Hay una gema para solucionar este problema: mysql_retry_lost_connection

     http://rubyforge.org/projects/zventstools/
     "Reconnect to the MySQL server when you hit a lost connection error".
    
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top