Улучшение производительности в Mongodb с помощью драйвера Java - PullRequest
6 голосов
/ 28 июля 2011

Я хотел интегрировать MongoDB в мое приложение. Я протестировал с помощью инструмента Apache Banchmarking и вывел 1 000 000 входящих запросов с уровнем параллелизма 1000. После некоторого теста вставки записей в 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();

1 Ответ

2 голосов
/ 29 июля 2011

Наличие 1000 клиентов (что я предполагаю, что вы подразумеваете под уровнем параллелизма 1000) попадание в БД за один раз звучит для меня высоко.Если он работает в системе с 1-2 ядрами, ваш компьютер, вероятно, тратит много времени на переключение между различными процессами.Работает ли БД и инструмент для тестирования производительности на одном компьютере?Это увеличит время, затрачиваемое на переключение процессов.

Вы можете попробовать поместить клиент в один многоядерный процессор, а базу данных - в другой.

Или попытаться запустить меньше симулированных клиентов, может быть, 10-20.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...