Повышение производительности в Mongodb с помощью драйвера java
Я хотел интегрировать MongoDB в свое приложение. Я протестировал с помощью Apache Banchmarking tool и выдал 1,00,000 входящих запросов с уровнем параллелизма 1000. После некоторого теста вставки записей в mongodb, я могу выяснить, что он вставляет около 1000 rec/sec. но этого недостаточно для моего приложения. Может ли кто-нибудь предложить, что является лучшим способом улучшить perofmance, чтобы я мог достичь цели 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 ответ:
Наличие 1000 клиентов (что, как я предполагаю, вы подразумеваете под уровнем параллелизма 1000), попадание в БД в одно время звучит для меня высоко. Если он работает на системе с 1-2 ядрами, ваша коробка, вероятно, тратит много времени на переключение между различными процессами. Работает ли инструмент БД и бенчмаркинг в одном окне? Это также увеличит количество времени, которое он тратит на переключение процессов.
Можно попробовать поместить клиент на одну многоядерную коробку, а БД-на другую.
Или попробовать запуск меньшего количества моделируемых клиентов, возможно, 10-20.
Comments