mongodb安裝
這里以安裝單機版為例,rpm包方式安裝
wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-server-4.4.7-1.el7.x86_64.rpm wget https://repo.mongodb.org/yum/redhat/7/mongodb-org/4.4/x86_64/RPMS/mongodb-org-mongos-4.4.7-1.el7.x86_64.rpm rpm -ivh mongodb-org-server-4.4.7-1.el7.x86_64.rpm rpm -ivh mongodb-org-mongos-4.4.7-1.el7.x86_64.rpm
啟動 systemctl start mongod
YCSB壓測工具安裝
這里不采用網上大多說的maven方式源碼安裝,因為只需要mongo相關的壓測工具,故直接下載對應的包即可
wget https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-mongodb-binding-0.17.0.tar.gz tar zxvf ycsb-mongodb-binding-0.17.0.tar.gz cd ycsb-mongodb-binding-0.17.0
數據准備
這里准備測試數據,同時也是測試insert的壓力數據
--異步驅動異常,連接會報錯 ./bin/ycsb load mongodb-async -s -target 5000 -threads 10 -P workloads/workloada -p mongodb.url="mongodb://test:vG5fmBwKOn@192.168.15.145:27005/testdb" --同步方式,正常使用 ./bin/ycsb load mongodb -s -target 5000 -threads 10 -P workloads/workloada -p mongodb.url="mongodb://test:vG5fmBwKOn@192.168.15.145:27005/testdb"
壓測
編輯壓測參數文件,workloads目錄下提供了多種模板,這里以workloada模板為例
table=usertable (壓測時的集合名稱) recordcount = 1000000(表示load和run操作中,使用的YCSB實例記錄數) operationcount = 1000000(表示load和run操作中,使用的YCSB實例操作數) workload = com.yahoo.ycsb.workloads.CoreWorkload(要使用的工作負載類) readproportion = 0.5(默認是0.95,表示的是進行read的操作占所有操作的比例) updateproportion = 0.5(默認是0.05,表示的是進行update的操作占所有操作的比例) insertproportion = 0(默認是0,表示的是進行insert的操作占所有操作的比例) scanproportion = 0(默認是0,表示的是進行scan的操作占所有操作的比例) requestdistribution = zipfian(默認是uniform,應該使用什么分布來選擇要操作的記錄:uniform, zipfian, hotspot, sequential, exponential 和 latest) readallfields = true(默認值是1,應該讀取讀取所有字段(true),只讀取一個(false))
執行壓測
-threads 控制客戶端連接數
./bin/ycsb run mongodb -s -threads 100 -P workloads/workloada -p mongodb.url="mongodb://test:vG5fmBwKOn@192.168.15.145:27005/testdb"
分片集群壓測
若要壓測分片集群,需手工提前建立測試集合,並設置好分片鍵,然后進行壓測即可
mongos> use testdb; mongos> db.createCollection("usertable") mongos> sh.shardCollection("testdb.usertable",{"_id":"hashed"})