2011-12-09 12 views
20

Voy a tener un sitio web con 20k + usuarios simultáneos.mongodb & max connections

voy a usar mongodb usando un nodo de administración y 3 o más nodos para fragmentación de datos.

ahora mi problema son las conexiones máximas. si tengo tantos usuarios accediendo a la base de datos, ¿cómo puedo asegurarme de que no alcancen el límite máximo? también tengo que cambiar algo tal vez en el kernel para aumentar las conexiones?

básicamente la base de datos se usará para mantener a los usuarios conectados al sitio, por lo que habrá grandes operaciones de lectura/escritura.

gracias de antemano.

+1

usan conexiones persistentes, disponibles en la mayoría de los controladores mongodb. – DhruvPathak

+0

Ayudaría bastante conocer su pila preferida (LAMP/PHP/Perl/Python/Ruby on Rails/Apache/Tomcat/Windows/Linux?) – Kato

Respuesta

23

No desea abrir una nueva conexión de base de datos cada vez que se conecta un nuevo usuario. No sé si podrá escalar fácilmente a más de 20,000 usuarios simultáneos, ya que MongoDB usa un nuevo hilo para cada conexión nueva. Desea que el backend de su aplicación web tenga abiertas solo una o algunas conexiones de base de datos y solo las utilice en un grupo, especialmente dado que el uso de la web es muy asincrónico y depende de los eventos.

ver: http://www.mongodb.org/display/DOCS/Connections

El servidor usará un hilo por conexión TCP , por lo tanto, es altamente recomendable que su aplicación utilizar algún tipo de agrupación de conexiones. Afortunadamente, la mayoría de los controladores manejan este detrás de las escenas. Una excepción notable son las configuraciones donde su aplicación genera un nuevo proceso para cada solicitud, como CGI y algunas configuraciones de PHP.

Cualquiera que sea el controlador que esté utilizando, tendrá que averiguar cómo manejan las conexiones y si se agrupan o no. Por ejemplo, Node's Mongoose no tiene bloqueo y por lo tanto usas una conexión por aplicación generalmente. Este es el tipo de cosas que probablemente quieras.

+0

gracias por su respuesta, ahora, soy novato total ... ¿Qué es? este controlador de lo que estás hablando? ¿cómo puedo configurarlo? gracias –

+1

@enrico Bueno, el modelo de programación que desea utilizar es la programación basada en eventos y no el modelo basado en hilos en el que estaba pensando. Node.js + Express + Mongoose + MongoDB es una pila popular para esto. Si te gusta Perl, investiga Mojolicious o AnyEvent. El problema con el que se encontrará si no utiliza un sistema con el sistema que le interesa es el problema C10k: http://www.kegel.com/c10k.html Tengo un ejemplo de la aplicación web Node.js aquí: http : //github.com/EhevuTov/netPeek – EhevuTov