ubuntu下使用ycsb對mongoDB進行性能測試

運行環境 :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.出具測試報告。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章