YCSB是是 Yahoo 公司的一個(gè)用來(lái)對(duì)云服務(wù)進(jìn)行基礎(chǔ)測(cè)試的工具。目標(biāo)是促進(jìn)新一代云數(shù)據(jù)服務(wù)系統(tǒng)的性能比較谷饿。
開(kāi)源地址:https://github.com/brianfrankcooper/YCSB
可以下載編譯好的幢哨,也可以自行編譯可用版本,
本文直接使用提供的編譯好的。
下載地址:https://github.com/brianfrankcooper/YCSB/releases/
如需自行編譯:參考https://blog.csdn.net/vkingnew/article/details/82027461
測(cè)試說(shuō)明:https://github.com/brianfrankcooper/YCSB/wiki/Running-a-Workload
目前最新的版本是0.15.0版本秸苗,可以直接 https://github.com/brianfrankcooper/YCSB/releases/download/0.15.0/ycsb-0.15.0.tar.gz 下載
本文環(huán)境:mac
解壓到任意目錄
tar xfvz ycsb-0.15.0.tar.gz
cd ycsb-0.15.0
進(jìn)行mongodb測(cè)試
YCSB的運(yùn)行分為兩個(gè)階段:測(cè)試數(shù)據(jù)加載階段和測(cè)試操作執(zhí)行階段,前者用來(lái)加載測(cè)試數(shù)據(jù)集运褪,后者用來(lái)執(zhí)行正真的測(cè)試操作惊楼。
1.配置要測(cè)試的MongoDB,地址為:mongodb://localhost:27017秸讹,新建一個(gè)名叫ycsb的數(shù)據(jù)庫(kù)
異步驅(qū)動(dòng)加載檀咙、運(yùn)行
cd ycsb-0.15.0
./bin/ycsb load mongodb-async -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0
./bin/ycsb run mongodb-async -s -P workloads/workloada -p mongodb.url=mongodb://localhost:27017/ycsb?w=0
同步驅(qū)動(dòng)加載、運(yùn)行
cd ycsb-0.15.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
測(cè)試結(jié)果:
測(cè)試說(shuō)明
參考:https://blog.csdn.net/vkingnew/article/details/82027461
測(cè)試模式
文件名 測(cè)試場(chǎng)景 讀取更新插入比 應(yīng)用示例
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.
注釋:
其他的默認(rèn)參數(shù):
Default data size: 1 KB records (10 fields, 100 bytes each, plus key)
Request distribution: zipfian
配置模式中的參數(shù):
參數(shù) 說(shuō)明
fieldcount 單條記錄字段個(gè)數(shù)璃诀,默認(rèn)10
fieldlength 每個(gè)字段的大小弧可,默認(rèn)100B
readallfields 是否讀取所有記錄,默認(rèn)true
readproportion 讀比例(默認(rèn)0.95)
updateproportion 更新比例(默認(rèn)0.05)
insertproportion 插入比例(默認(rèn)0)
scanproportion 掃描比例(默認(rèn)0)
readmodifywriteproportion 同一記錄讀劣欢、修改棕诵、回寫(xiě)比例(默認(rèn)值:0)
requestdistribution 記錄選擇策略:uniform,zipfian,latest(默認(rèn)值:uniform)
maxscanlength 最大scan記錄數(shù)(默認(rèn)值:100)
scanlengthdistribution scan記錄選擇策略(默認(rèn)值:uniform)
insertorder 記錄插入策略:ordered,hashed(默認(rèn)值:hashed)
operationcount 操作執(zhí)行數(shù)
maxexecutiontime 最大執(zhí)行時(shí)間,單位:秒
table 表名(默認(rèn)值值usertable)
recordcount 初始化記錄條數(shù)(默認(rèn)值:0)
mongodb參數(shù)設(shè)置:
參數(shù) 說(shuō)明
mongodb.url MongoDB URI或者連接串
mongodb.batchsize 對(duì)大量inert操作的時(shí)候凿将,分批commit提交校套,提高吞吐量
mongodb.upsert 默認(rèn)是false.true表示update操作,false表示insert操作.
mongodb.writeConcern 默認(rèn)值是acknowledged牧抵。
可選的值:
- `errors_ignored`
- `unacknowledged`
- `acknowledged`
- `journaled`
- `replica_acknowledged`
- `majority`
mongodb.readPreference 默認(rèn)值是primary
可選值:
- `primary`
- `primary_preferred`
- `secondary`
- `secondary_preferred`
- `nearest`
mongodb.maxconnections 默認(rèn)值是100. mongodb.url選型中的maxPoolSize的值笛匙。
mongodb.threadsAllowedToBlockForConnectionMultiplier
默認(rèn)值是5. mongodb.url 選型中的waitQueueMultiple的值。
測(cè)試步驟:
--壓力測(cè)試的步驟:
1.啟動(dòng)mongoDB,建立測(cè)試數(shù)據(jù)庫(kù)
2.編寫(xiě)workload文件:
3.加載數(shù)據(jù):load
3.運(yùn)行壓測(cè):run
4.壓測(cè)過(guò)程中可配合mongostat膳算,iostat座硕,pmm等圖形界面的監(jiān)控一起觀察
5.在不同并發(fā)下壓力測(cè)試。
6.出具測(cè)試報(bào)告涕蜂。