概述
Yahoo! Cloud Serving Benchmark (YCSB) 是一個(gè)Java語(yǔ)言實(shí)現(xiàn)的主要用于云端或者服務(wù)器端的數(shù)據(jù)庫(kù)性能測(cè)試工具宙暇,其內(nèi)部涵蓋了常見(jiàn)的NoSQL數(shù)據(jù)庫(kù)產(chǎn)品,如Cassandra票唆、MongoDB、HBase、Redis等等翎蹈。
下載地址:https://github.com/brianfrankcooper/YCSB/wiki
官方地址:https://github.com/brianfrankcooper/YCSB
這個(gè)框架具有很好的可擴(kuò)展性,可以通過(guò)配置文件來(lái)指定需要進(jìn)行什么樣的workload的測(cè)試捌臊,比如讀寫(xiě)比例多少杨蛋,每條記錄多大,每個(gè)字段多大理澎,并發(fā)數(shù)多大逞力,進(jìn)行隨機(jī)選擇使用的分布(比如讀一條數(shù)據(jù)的時(shí)候)等。
其中糠爬,灰色部分用戶(hù)可以通過(guò)編寫(xiě)Java代碼的方式來(lái)自己定制寇荧。
提出目的:
NoSQL數(shù)據(jù)庫(kù)不支持ACID型事務(wù),各種不同類(lèi)型的OLTP(on-Line Transaction Processing)應(yīng)用程序服務(wù)與傳統(tǒng)數(shù)據(jù)庫(kù)服務(wù)工作負(fù)載有很大的區(qū)別执隧,所以不能單靠傳統(tǒng)的標(biāo)準(zhǔn)如(TCP-C)來(lái)衡量NoSQL數(shù)據(jù)庫(kù)性能
優(yōu)點(diǎn)
- 配置方便揩抡,源碼開(kāi)源《屏穑可以設(shè)置任意讀寫(xiě)比峦嗤,線(xiàn)程數(shù)
- 它包括幾乎所有數(shù)據(jù)庫(kù)的驅(qū)動(dòng)程序,并且有較強(qiáng)的可擴(kuò)展性
- 這是行業(yè)標(biāo)準(zhǔn)屋摔。(相當(dāng)穩(wěn)定且有據(jù)可查)
缺點(diǎn)
- 不能自動(dòng)生成測(cè)試文檔
- 沒(méi)有UI操作界面烁设,需要一定門(mén)檻
參考文獻(xiàn)
Benchmarking Cloud Serving Systems with YCSB
安裝與使用
1. 下載工具包,直接解壓就可以使用钓试,無(wú)需編譯和安裝装黑。
環(huán)境需求:java,YCSB是java應(yīng)用程序,所以依賴(lài)于JRE
下載地址1:https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/native/YCSB-0.15.0.zip
下載地址2:https://github.com/brianfrankcooper/ YCSB /releases/download/0.17.0/ycsb-0.17.0.tar.gz
2. 將下載的壓縮包解壓弓熏,并打開(kāi)恋谭。
主要目錄說(shuō)明:
- bin:目錄下有個(gè)可執(zhí)行的ycsb文件,是用戶(hù)操作的命令行接口挽鞠。ycsb主邏輯是:解析命令行疚颊、設(shè)置java環(huán)境,加載java-libs信认,封裝成可以執(zhí)行的java命令串稀,并執(zhí)行。
- workloads:目錄下有各種workload的模板狮杨,可以基于workload模板進(jìn)行自定義修改母截。
默認(rèn)的6種測(cè)試場(chǎng)景如下:
1)workloada:讀寫(xiě)均衡型,50%/50%橄教,Reads/Writes
2)workloadb:讀多寫(xiě)少型清寇,95%/5%喘漏,Reads/Writes
3)workloadc:只讀型,100%华烟,Reads
4)workloadd:讀最近寫(xiě)入記錄型翩迈,95%/5%,Reads/insert
5)workloade:掃描小區(qū)間型盔夜,95%/5%负饲,scan/insert
6)workloadf:讀寫(xiě)入記錄均衡型,50%/50%喂链,Reads/insert - workload_template:參數(shù)列表模板返十。
3. 壓測(cè)配置。
選擇需要測(cè)試的測(cè)試場(chǎng)景椭微,編輯對(duì)應(yīng)的配置文件洞坑,以讀寫(xiě)均衡型測(cè)試workloada為例:
參數(shù)項(xiàng) | 參數(shù)具體含義 |
---|---|
recordcount | YCSB load階段加載的記錄條數(shù) |
operationcount | YCSB run階段執(zhí)行的操作總數(shù) |
workload | workload實(shí)現(xiàn)類(lèi) |
readallfields | 查詢(xún)時(shí)是否讀取記錄的所有字段 |
readproportion | 讀操作的百分比 |
updateproportion | 更新操作的百分比 |
scanproportion | 插入操作的百分比 |
requestdistribution | 請(qǐng)求分布模式,uniform, zipfian, latest三種分布模式 |
mongodb.url | 待測(cè)試mongo實(shí)例的連接地址 (注:此為添加項(xiàng)) |
mongodb.database | 測(cè)試時(shí)使用的數(shù)據(jù)庫(kù)名稱(chēng)蝇率,默認(rèn)ycsb(注:此為添加項(xiàng)) |
4. 加載數(shù)據(jù)
bin\ycsb load mongodb -threads 100 -P workloads\workloada
返回字段Return=OK迟杂,則表示數(shù)據(jù)導(dǎo)入成功。
命令參數(shù)說(shuō)明:
ycsb [command] [database] [options]
- command選項(xiàng):
load:載入測(cè)試數(shù)據(jù)本慕。
run:執(zhí)行測(cè)試過(guò)程排拷。
shell:交互模式。- database選項(xiàng):指定測(cè)試的數(shù)據(jù)庫(kù)場(chǎng)景锅尘,例如mongodb, cassandra, memcached等监氢。
- options選項(xiàng):
-P file :指定workload文件,相對(duì)路徑或者絕對(duì)路徑鉴象。
-cp path :指定額外的Java classpath。
-jvm-args args :指定額外的JVM參數(shù)何鸡。
-p key=value :設(shè)置ycsb配置項(xiàng)纺弊,會(huì)覆蓋workload文件的配置項(xiàng)。
-s :運(yùn)行時(shí)的中間狀態(tài)打印到stderr中骡男。
-target n :表示1s中總共的操作次數(shù)淆游。
-threads n :設(shè)置ycsb client的并發(fā)測(cè)試線(xiàn)程數(shù),默認(rèn)是1隔盛,單線(xiàn)程犹菱。
5. 執(zhí)行測(cè)試
bin\ycsb run mongodb -threads 100 -P workloads\workloada
返回字段Return=OK,則表示測(cè)試完成吮炕,取“[OVERALL],Throughput”值作為測(cè)試指標(biāo)腊脱。
測(cè)試結(jié)果分析
RunTime(ms): 數(shù)據(jù)加載所用時(shí)間,單位毫秒(ms)
Throughput(ops/sec): 吞吐量,即ops(每秒操作次數(shù))
Operations: 操作的總次數(shù)
AverageLatency(us): 平均響應(yīng)延時(shí),單位是微秒(us)
MinLatency(us): 最小響應(yīng)時(shí)間,單位是微秒(us)
MaxLatency(us): 最大響應(yīng)時(shí)間,單位是微秒(us)
95thPercentileLatency(us): 95%的操作延時(shí),單位是微秒(us)
99thPercentileLatency(us): 99%的操作延時(shí),單位是微秒(us)
Return=OK: 成功返回?cái)?shù),這個(gè)值不符合測(cè)試要求,則證明測(cè)試失敗.
[READ]開(kāi)頭的代表只讀的操作記錄,其他還有例如上面的[insert],[UPDATE]等,
其他可以理解的就是字面意思,不能理解也不需要太過(guò)關(guān)注.
和其他測(cè)試軟件一樣,這個(gè)只能說(shuō)是基準(zhǔn)值,并不是標(biāo)準(zhǔn)值,和真實(shí)環(huán)境不能全部模擬,所以測(cè)試的思維要結(jié)合別的測(cè)試軟件的方法來(lái)做.