所用工具:YCSB(https://github.com/brianfrankcooper/YCSB)
墙裂建议用这个YCSB压测工具,个人使用发现十分简单高效,比之前用过的jmeter做接口压测还要简单,YCSB需要依赖maven和jdk,所以要先按照这两个,安装步骤直接贴官方文档:
Install Java and Maven
Go to http://www.oracle.com/technetwork/java/javase/downloads/index.html
and get the url to download the rpm into your server. For example:
wget http://download.oracle.com/otn-pub/java/jdk/7u40-b43/jdk-7u40-linux-x64.rpm?AuthParam=11232426132 -o jdk-7u40-linux-x64.rpm
rpm -Uvh jdk-7u40-linux-x64.rpm
Or install via yum/apt-get
sudo yum install java-devel
Download MVN from http://maven.apache.org/download.cgi
wget http://ftp.heanet.ie/mirrors/www.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz
sudo tar xzf apache-maven-*-bin.tar.gz -C /usr/local
cd /usr/local
sudo ln -s apache-maven-* maven
sudo vi /etc/profile.d/maven.sh
Add the following to `maven.sh`
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}
Reload bash and test mvn
bash
mvn -version
而对于YCSB的安装官方文档也介绍了十分简单,下载下来解压就可以直接使用!
Download the YCSB zip file and compile:
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.5.0/ycsb-0.5.0.tar.gz
tar xfvz ycsb-0.5.0.tar.gz
cd ycsb-0.5.0
### 4. Run YCSB
Now you are ready to run! First, use the asynchronous driver to load the data:
./bin/ycsb load mongodb-async -s -P workloads/workloada > outputLoad.txt
Then, run the workload:
./bin/ycsb run mongodb-async -s -P workloads/workloada > outputRun.txt
不过这里启动YCSB只是用的最简单的设置,我们可以针对自己的需求加一些参数进行调整,具体参数如下:https://blog.csdn.net/qq_32523587/article/details/60875097
mongodb.url:指定mongodb地址,当然这个也可以直接在workloads/下对应的配置文件中设置。
mongodb.batchsize;设置批量提交,默认值是1即一条一条进行提交
mongodb.upsert:对于插入操作,如果记录已经存在,则进行更新否则插入
mongodb.writeConcern:这个设置已经过期了,可以直接在mongodb.url后面直接附带上
mongodb.maxconnections:过期参数,设置最大连接数,也可以和mongodb.url附带一起
例如这里本人的测试命令如下:
./bin/ycsb load mongodb -threads 100 -s -P workloads/workloada -p mongodb.url=mongodb://xxx.xxx.xxx.xxx:20000/ycsb?w=0 > result/Loada—shard6.txt
./bin/ycsb run mongodb -threads 100 -s -P workloads/workloada -p mongodb.url=mongodb://xxx.xxx.xxx.xxx:20000/ycsb?w=0 > result/Runa-shard6.txt
以上测试用例中设置了启动线程100个用于测试,并且在mongodb.url
参数后面通过?
的形式附带一些其它参数的设置。运行完毕后,查看对应result/Loada—shard6.txt
和result/Runa-shard6.txt
中的数据即可。
这里的YCSB除了能用来做mongodb
的性能测试,还可以支持许多其它的主流nosql数据库,解压完毕后,进入YCSB的文件夹中,查看最新支持的内容如下:
$ ls
accumulo1.6-binding asynchbase-binding cloudspanner-binding elasticsearch-binding hbase098-binding hypertable-binding lib mongodb-binding redis-binding s3-binding
accumulo1.7-binding azuredocumentdb-binding couchbase2-binding foundationdb-binding hbase10-binding ignite-binding LICENSE.txt nosqldb-binding rest-binding solr6-binding
accumulo1.8-binding azuretablestorage-binding couchbase-binding geode-binding hbase12-binding infinispan-binding maprdb-binding NOTICE.txt result solr-binding
aerospike-binding bin dynamodb-binding googlebigtable-binding hbase14-binding jdbc-binding maprjsondb-binding orientdb-binding riak-binding tarantool-binding
arangodb-binding cassandra-binding elasticsearch5-binding googledatastore-binding hbase20-binding kudu-binding memcached-binding rados-binding rocksdb-binding workloads