Когда 10gen переключил стандартный движок JavaScript для MongoDB 2.3 / 2.4 по умолчанию со SpiderMonkey на V8, я подумал, что воспользуюсь возможностью сравнить относительные характеристики релизов с помощью монгометра . Будучи сотрудником службы безопасности, я действительно должен был сначала рассмотреть дополнительные функции аутентификации … Эй, хо.
Я задокументирую шаги, предпринятые во время сравнения, в том числе настройку, чтобы это можно было повторить и проверить — на случай, если кому-то будет интересно — но в основном, чтобы я мог напомнить себе о том, что я сделал; память, сито.
Настройка
Я собираюсь установить 2.2.2 и 2.3.2 параллельно на выделенную машину. Затем я буду использовать последнюю версию драйвера Java с mongometer.
|
1
2
|
$ wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.3.2.tgz$ wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.3.2.tgz.md5 |
Я получил 403 ответа на этот запрос …
|
1
2
3
4
5
|
$ wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.2.tgz$ wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.2.2.tgz.md5$ md5sum -c mongodb-linux-x86_64-2.2.2.tgz.md5md5sum: mongodb-linux-x86_64-2.2.2.tgz.md5: no properly formatted MD5 checksum lines found |
Хмм. Предполагается, что файл md5 будет контрольной суммой (затем x2 пробелами), а затем именем файла контрольной суммы файла. Вместо этого мне придётся взглянуть на них, ну, на глаз, тот, который я мог бы скачать…
|
1
2
3
4
|
$ md5sum mongodb-linux-x86_64-2.2.2.tgzbe0f5969b0ca23a0a383e4ca2ce50a39 mongodb-linux-x86_64-2.2.2.tgz$ cat mongodb-linux-x86_64-2.2.2.tgz.md5be0f5969b0ca23a0a383e4ca2ce50a39 |
Настройка
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
|
$ tar -zxvf ~/mongodb-linux-x86_64-2.2.2.tgz$ sudo mkdir -p /usr/lib/mongodb/2.2.2$ sudo mv mongodb-linux-x86_64-2.2.2/* /usr/lib/mongodb/2.2.2/$ rm -r mongodb-linux-x86_64-2.2.2$ sudo mkdir -p /data/db/2.2.2$ sudo chown `id -un` /data/db/2.2.2$ /usr/lib/mongodb/2.2.2/bin/mongod --port 27000 --dbpath /data/db/2.2.2 --logpath /data/db/2.2.2/mongod.log$ tar -zxvf ~/mongodb-linux-x86_64-2.3.2.tgz$ sudo mkdir -p /usr/lib/mongodb/2.3.2$ sudo mv mongodb-linux-x86_64-2.3.2/* /usr/lib/mongodb/2.3.2/$ rm -r mongodb-linux-x86_64-2.3.2$ sudo mkdir -p /data/db/2.3.2$ sudo chown `id -un` /data/db/2.3.2$ /usr/lib/mongodb/2.3.2/bin/mongod --port 27001 --dbpath /data/db/2.3.2 --logpath /data/db/2.3.2/mongod.log |
Давайте проверим, что они работают.
|
1
2
3
|
$ ps -ef | grep mongod1795 /usr/lib/mongodb/2.2.2/bin/mongod --port 27000 --dbpath /data/db/2.2.2 --logpath /data/db/2.2.2/mongod.log2059 /usr/lib/mongodb/2.3.2/bin/mongod --port 27001 --dbpath /data/db/2.3.2 --logpath /data/db/2.3.2/mongod.log |
Теперь давайте убьем одного (изящно) и перейдем к интересным вещам.
|
1
2
3
|
$ sudo kill -15 2059$ ps -ef | grep mongod1795 /usr/lib/mongodb/2.2.2/bin/mongod --port 27000 --dbpath /data/db/2.2.2 --logpath /data/db/2.2.2/mongod.log |
Теперь я прыгаю на другую коробку.
|
1
2
3
4
|
$ wget https://github.com/downloads/mongodb/mongo-java-driver/mongo-2.10.1.jar$ cp mongo-2.10.1.jar /usr/lib/jmeter/2.8/lib/ext$ cp ~/IdeaProjects/mongometer/out/artifacts/mongometer_jar/mongometer.jar /usr/lib/jmeter/2.8/lib/ext$ /usr/lib/jmeter/2.8/bin/jmeter.sh |
Тесты
Тесты действительно довольно простые; Я выполню вставку в две разные базы данных и выполню поиск по этим базам данных.
Версия 2.2.2
|
1
2
|
show dbslocal 0.078125GB |
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
> show dbsjmeter 0.203125GBjmeter2 0.203125GBlocal 0.078125GB> use jmeter> db.jmeter.find().count()1000> db.dropDatabase()> use jmeter2> db.jmeter.find().count()1000> db.dropDatabase()$ ps -ef | grep mongo2690 /usr/lib/mongodb/2.2.2/bin/mongod --port 27000 --dbpath /data/db/2.2.2 --logpath /data/db/2.2.2/mongod.log$ sudo kill -15 2690$ ps -ef | grep mongo |
Ничего. Давайте запустим экземпляр 2.3.2.
|
1
2
3
|
$ /usr/lib/mongodb/2.3.2/bin/mongod --port 27001 --dbpath /data/db/2.3.2 --logpath /data/db/2.3.2/mongod.log$ ps -ef | grep mongo 2947 /usr/lib/mongodb/2.3.2/bin/mongod --port 27001 --dbpath /data/db/2.3.2 --logpath /data/db/2.3.2/mongod.log |
Версия 2.3.2
|
1
2
|
> show dbslocal 0.078125GB |
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
> show dbsjmeter 0.203125GBjmeter2 0.203125GBlocal 0.078125GB> use jmeter> db.jmeter.find().count()1000> db.dropDatabase()> use jmeter2> db.jmeter.find().count()1000> db.dropDatabase() |
Выводы
Я думаю, вы должны нарисовать свой собственный. Я запускал эту программу пару раз и собираюсь написать сценарий, чтобы очистить среду перед каждым запуском, возможно, я мог бы добавить и более сложные запросы. Может быть, если я найду время на следующих выходных, я найду.
Ссылка: SpiderMonkey на V8 для MongoDB и mongometer от нашего партнера JCG Яна Эттлса в блоге об исключительных исключениях .


















