使用java驱动程序提高Mongodb的性能

Ana*_*oni 6 java mongodb

我想在我的应用程序中集成MongoDB.我已经使用Apache Banchmarking工具进行了测试,并生成了1000个并发级别的1,00,000个传入请求.在mongodb中插入记录的一些测试之后,我可以发现它插入大约1000 rec/sec.但这对我的申请来说还不够.任何人都可以建议提高性能的最佳方法是什么,这样我才能实现2000 rec/sec的目标.

我的代码是:

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();
Run Code Online (Sandbox Code Playgroud)

nas*_*ash 2

让 1000 个客户端(我假设您所说的并发级别为 1000)同时访问数据库对我来说听起来很高。如果它在 1-2 核心系统上运行,您的机器可能会花费大量时间在不同进程之间切换。数据库和基准测试工具是否在同一个机器上运行?这也会增加进程切换所花费的时间。

您可以尝试将客户端放在一个多核盒子上,将数据库放在另一个多核盒子上。

或者尝试运行更少的模拟客户端(可能是 10-20 个)。