2011-09-10 12 views
16

Para cada solicitud estaba abriendo la base de datos, consultando, cerrando la base de datos.MongoDB: ¿con qué frecuencia debe abrir y cerrar la base de datos? ¿Por qué?

Yo estaba corriendo de forma esporádica en un problema connection already opened.

Terminé cambiando la configuración para simplemente abrir mongo y mantenerlo abierto.

¿Cuáles son las desventajas de este método?

Gracias!

(nota: el uso de Node.js)

Respuesta

0

No puedo hablar por el conductor Node.js, pero el conductor de Java fue diseñado para ser utilizado de esta manera: http://www.mongodb.org/display/DOCS/Java+Driver+Concurrency - que maneja las conexiones internas. Quizás el controlador node.js también lo haga. Tal vez vale la pena enviar un correo electrónico a los desarrolladores del controlador para preguntar?

+0

Los controladores Java y node.js se comportan de manera muy diferente. El controlador de Java tiene un grupo de conexiones configurable incorporado. El controlador node.js se mueve en esa dirección, pero node.js es definitivamente diferente. –

2

La respuesta aquí dependerá de la versión que esté ejecutando. El método descrito en el main github page implica abrir/cerrar una conexión "según sea necesario".

Actualmente, se trabaja en el correcto soporte de conjuntos de réplicas y se proporciona una agrupación básica de conexiones. De hecho, hubo un check-in ayer para dirigirse al clean up of pooled connections on error.

Dado que los documentos proporcionan este método de abrir/cerrar, este es probablemente el camino a seguir. Es lo que estoy haciendo actualmente en mis aplicaciones. En cuanto al problema que está viendo, esto puede ser un error. Una vez más, la versión en el controlador es < 1.0 y hubo un check-in ayer para algo similar a lo que está experimentando, por lo que puede haber algunos problemas.

Editar: Debo añadir que Christian es un gran tipo haciendo este trabajo en su tiempo con el apoyo limitado del equipo de 10gen. Crear un controlador de este tipo es mucho trabajo, por lo que si encuentra errores, como volver a utilizar las conexiones abiertas, definitivamente presente un error o contribuya con una solución.

Cuestiones relacionadas