使用Java驱动程序改善Mongodb性能

5
我希望在我的应用程序中集成MongoDB。我使用了Apache Banchmarking工具测试了1000并发级别的1,00,000个传入请求。在对MongoDB插入记录进行一些测试后,我可以发现它每秒插入约1000条记录。但这对于我的应用程序来说不足够。有人能建议如何提高性能吗,以便我可以实现每秒2000条记录的目标。
我的代码是:
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
看看这个是否有帮助:https://dev59.com/e-o6XIcBkEYKwwoYSClJ#6786925 - DhruvPathak
你确定是遇到了MongoDB的瓶颈吗?每秒1000次插入操作非常慢。我在我的本地开发机上轻松达到每秒20,000次以上的插入操作。确保你正在正确地进行基准测试。在一个健康的生产服务器上,插入吞吐量应该要好得多。 - Remon van Vliet
我正在使用Tomcat服务器。是否有MongoOption的配置? 你能告诉我每个主机提供多少连接吗? - Anand Soni
1个回答

2

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

您可以尝试将客户端放在一个多核心计算机上,将数据库放在另一个计算机上。

或者尝试运行较少的模拟客户端,例如10-20个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接