Когда 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.md5 md5sum: 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.tgz be0f5969b0ca23a0a383e4ca2ce50a39 mongodb-linux-x86_64-2.2.2.tgz $ cat mongodb-linux-x86_64-2.2.2.tgz.md5 be0f5969b0ca23a0a383e4ca2ce50a39 |
Настройка
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 mongod 1795 /usr/lib/mongodb/2 .2.2 /bin/mongod --port 27000 --dbpath /data/db/2 .2.2 --logpath /data/db/2 .2.2 /mongod .log 2059 /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 mongod 1795 /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 dbs local 0.078125GB |
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
|
> show dbs jmeter 0.203125GB jmeter2 0.203125GB local 0.078125GB > use jmeter > db.jmeter. find ().count() 1000 > db.dropDatabase() > use jmeter2 > db.jmeter. find ().count() 1000 > db.dropDatabase() $ ps -ef | grep mongo 2690 /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 dbs local 0.078125GB |
01
02
03
04
05
06
07
08
09
10
11
12
13
14
|
> show dbs jmeter 0.203125GB jmeter2 0.203125GB local 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 Яна Эттлса в блоге об исключительных исключениях .