2011-07-28 21 views
6

Yo quería integrar MongoDB en mi aplicación. He probado usando la herramienta de Banchmarking de Apache y produzco 1,00,000 solicitudes entrantes con un nivel de concurrencia de 1000. Después de una prueba de inserción de registros en mongodb, puedo deducir que está insertando alrededor de 1000 rec/seg. Pero no es suficiente para mi aplicación. ¿Alguien puede sugerir que cuál es la mejor manera de mejorar el rendimiento, para que pueda alcanzar el objetivo de 2000 rec/seg.Mejore el rendimiento en Mongodb usando el controlador java

Mi código es:

private static MongoOptions mo = new MongoOptions(); 
mo.connectionsPerHost = 20; 
mo.threadsAllowedToBlockForConnectionMultiplier = 100; 
private static Mongo m = new Mongo("127.0.0.1",mo);  
private static DB db = m.getDB("mydb"); 
private static DBCollection coll = db.getCollection("mycoll"); 
DBObject dbObj = (DBObject) JSON.parse(msg); 
db.requestStart();  
coll.insert(dbObj);  
dbObj.removeField("_id");  
dbObj.put("val", "-10"); 
coll.insert(dbObj); 
db.requestDone(); 
+1

Ver si esto ayuda: http://stackoverflow.com/questions/6783212/how-to-load-100-million-records-into-mongodb-with-scala-for-performance-testing/6786925#6786925 – DhruvPathak

+0

¿Estás seguro de que te encuentras con un cuello de botella impuesto mongo? 1000 inserciones por segundo es extremadamente lento. Puedo golpear fácilmente más de 20,000 inserciones por segundo en mi máquina de desarrollo local. Asegúrate de estar comparando correctamente. En un servidor de producción saludable, el rendimiento de la inserción debería ser mucho, mucho mejor. –

+0

Estoy usando el servidor tomcate. ¿Hay alguna configuración de MongoOption? ¿Puede decirme cuántas conexiones por host está dando? –

Respuesta

2

Tener 1000 clientes (que es lo que supongo que te refieres por nivel de concurrencia 1000) golpeando la base de datos a la vez suena alto para mí. Si se está ejecutando en un sistema de 1-2 núcleos, es probable que su caja pase mucho tiempo cambiando entre los diferentes procesos. ¿La herramienta de BD y evaluación comparativa se ejecuta en la misma caja? Eso aumentará la cantidad de tiempo que pasa el cambio de proceso también.

Puede tratar de poner el cliente en un cuadro de varios núcleos y el DB en otro.

O intente ejecutar menos clientes simulados tal vez 10-20.

Cuestiones relacionadas