2010-02-24 15 views
7

Así que mi pasajero giros de hasta 5 casos de mi aplicación RailsMongoDB: ¿Qué es la agrupación de conexiones y el tiempo de espera?

me conecto a MongoDB usando Connection.new ("localhost", 3000,: pool_size => 1,: timeout => 5)

¿Por qué Necesito un "grupo de conexiones" si solo incurro en gastos generales al iniciar mi aplicación Rails, no por solicitud. ¿Por qué un solo proceso necesitaría más de 1 conexión?

¿Cuál es el propósito del tiempo de espera? ¿Por qué querría la conexión al tiempo de espera? ¿No debería persistir durante la vida útil del proceso Rails?

Tan confundida ...

Esta pregunta es específica para Ruby y Mongo, pero supongo que se aplica a otros idiomas/bases de datos.

Respuesta

3

No es necesario que use la agrupación de conexiones aquí. Como está utilizando Passenger, solo asegúrese de que cada instancia use una conexión separada al capturar el evento start_worker_process. Esto está documentado en el lector README.

La agrupación de conexiones puede ser útil para ciertas aplicaciones de subprocesos múltiples. pool_size es el número máximo de subprocesos simultáneos que manejará la conexión, y el tiempo de espera es la cantidad máxima de segundos que un subproceso puede esperar para un socket disponible antes de lanzar una excepción.

+0

En el caso del controlador ruby, conn = Connection.new (...,: pool_size => 10), ¿qué objeto posee el grupo y sus conexiones? ¿La puesta en común significa que no tengo que bloquear la conexión en mis hilos? – Alexandre

+0

en ese caso, conn poseerá la conexión y el grupo. no es necesario bloquear el objeto de conexión en absoluto. –

Cuestiones relacionadas