通过10gen将MongoDB 2.3 / 2.4的默认JavaScript引擎从SpiderMonkey切换到V8,我想我将借此机会使用mongometer比较这些发行版的相对性能。 作为安全专家,我真的应该首先研究“ 其他身份验证功能” ……嘿。
我将记录比较过程中所采取的步骤(包括设置步骤),以便可以重复进行并验证(以防万一有人感兴趣),但是主要是为了让我想起自己所做的事情; 记忆,筛子。
设置
我将在专用计算机上并排安装2.2.2和2.3.2。 然后,我将使用最新版本的Java驱动程序与mongometer。
$ 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响应…
$ 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
rr md5文件应该是校验和(然后是x2空格),然后是要校验和的文件名。 我将不得不盯着他们,好吧,盯着我实际上可以下载的那个…
$ 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
配置
$ 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
让我们检查它们是否正在运行。
$ 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
现在,让我们(优雅地)杀死一个,然后继续研究有趣的东西。
$ 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
现在我跳到另一个盒子。
$ 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
show dbs
local 0.078125GB
> 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实例。
$ /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
> show dbs
local 0.078125GB
> 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()
结论
我想你应该自己画画。 我运行了几次,并考虑编写脚本,以便在每次运行之前清理环境,我可能也可以添加更复杂的查询。 也许如果下周末我有空的话,我会的。
参考:来自我们的JCG合作伙伴 Jan Ettles的适用于MongoDB的V8的SpiderMonkey和Mongometer,来自Exceptionalexception异常博客。
翻译自: https://www.javacodegeeks.com/2013/01/spidermonkey-to-v8-for-mongodb-and-mongometer.html