運行環境 :amazon ubuntu18.04
ycsb需要java maven python環境,並測試下是否安裝成功
sudo apt install openjdk-8-jre-headless
java -version
sudo apt install maven
mvn --version
sudo apt install python
python --version
下面安裝mongodb
sudo apt-get install mongodb
進入mongodb,並且創建一個ycsb的數據庫
mongo
#進入mongoDB後,創建一個ycsb數據局
> use ycsb
switched to db ycsb
下面安裝ycsb
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
tar xfvz ycsb-0.17.0.tar.gz
同步驅動加載、運行
cd ycsb-0.17.0
./bin/ycsb load mongodb -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0
./bin/ycsb run mongodb -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0
測試結果:
測試說明
參考:https://blog.csdn.net/vkingnew/article/details/82027461
測試模式
文件名 測試場景 讀取更新插入比 應用示例
workloada Update heavy workload 50/50 Session store recording recent actions
workloadb Read mostly workload 95/5 photo tagging; add a tag is an update, but most operations are to read tags
workloadc Read only 100/0 user profile cache, where profiles are constructed elsewhere (e.g., Hadoop)
workloadd Read latest workload 95/0/5 user status updates; people want to read the latest
workloade Short ranges 95/5 threaded conversations, where each scan is for the posts in a given thread (assumed to be clustered by thread id)
workloadf Read-modify-write workload 50/50 user database, where user records are read and modified by the user or to record user activity.
註釋:
其他的默認參數:
Default data size: 1 KB records (10 fields, 100 bytes each, plus key)
Request distribution: zipfian
配置模式中的參數:
參數 說明
fieldcount 單條記錄字段個數,默認10
fieldlength 每個字段的大小,默認100B
readallfields 是否讀取所有記錄,默認true
readproportion 讀比例(默認0.95)
updateproportion 更新比例(默認0.05)
insertproportion 插入比例(默認0)
scanproportion 掃描比例(默認0)
readmodifywriteproportion 同一記錄讀、修改、回寫比例(默認值:0)
requestdistribution 記錄選擇策略:uniform,zipfian,latest(默認值:uniform)
maxscanlength 最大scan記錄數(默認值:100)
scanlengthdistribution scan記錄選擇策略(默認值:uniform)
insertorder 記錄插入策略:ordered,hashed(默認值:hashed)
operationcount 操作執行數
maxexecutiontime 最大執行時間,單位:秒
table 表名(默認值值usertable)
recordcount 初始化記錄條數(默認值:0)
mongodb參數設置:
參數 說明
mongodb.url MongoDB URI或者連接串
mongodb.batchsize 對大量inert操作的時候,分批commit提交,提高吞吐量
mongodb.upsert 默認是false.true表示update操作,false表示insert操作.
mongodb.writeConcern 默認值是acknowledged。
可選的值:
- `errors_ignored`
- `unacknowledged`
- `acknowledged`
- `journaled`
- `replica_acknowledged`
- `majority`
mongodb.readPreference 默認值是primary
可選值:
- `primary`
- `primary_preferred`
- `secondary`
- `secondary_preferred`
- `nearest`
mongodb.maxconnections 默認值是100. mongodb.url選型中的maxPoolSize的值。
mongodb.threadsAllowedToBlockForConnectionMultiplier
默認值是5. mongodb.url 選型中的waitQueueMultiple的值。
測試步驟:
--壓力測試的步驟:
1.啓動mongoDB,建立測試數據庫
2.編寫workload文件:
3.加載數據:load
3.運行壓測:run
4.壓測過程中可配合mongostat,iostat,pmm等圖形界面的監控一起觀察
5.在不同併發下壓力測試。
6.出具測試報告。