2012-01-05 18 views
6

De forma predeterminada, en Resque las bifurcaciones del proceso principal y los procesos secundarios crean una nueva conexión a la base de datos.¿Cómo compartir la conexión MySQL entre padres e hijos con Resque?

Esto puede funcionar, pero si tiene docenas de trabajadores, MySQL no puede mantener tantas conexiones abiertas y comienza a generar errores.

¿Cuál sería la solución para que los niños utilicen la conexión MySQL de su padre?

Respuesta

3

Lamentablemente, no existe una forma segura de compartir la conexión MySQL entre el padre y los hijos. Creo que tienes dos opciones a considerar:

  1. La solución más fácil es para sintonizar su servidor MySQL de modo que pueda aceptar más conexiones (es decir: http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html).
  2. Mire alternativas a Resque y/o diseños (es decir: beanstalkd, Redis, etc.) que le permiten evitar la creación de conexiones múltiples al servidor MySQL.
+0

Tengo que usar muchas conexiones para poder procesar una gran cantidad de datos lo más rápido posible. Cambiar a beanstalk o cualquier otro sistema de colas no lo cambiará. Usar redis para almacenamiento es una mala idea, pero Resque lo usa para hacer cola y es perfecto. – marcgg

+0

¿Estás seguro de que no hay más formas de permitir más conexiones? – marcgg

+1

Otra opción podría ser utilizar "resque-jobs-per-fork", enlace: http://github.com/samgranieri/resque-jobs-per-fork. Esto le permitiría procesar múltiples trabajos por horquilla, reduciendo la cantidad de conexiones concurrentes requeridas. Este hilo también podría ayudar: http://librelist.com/browser//resque/2010/6/28/reducing-database-churn/#fd6c9fec1ed29f2f06e10ce96b578dd0. –

Cuestiones relacionadas