ycsb兩個階段說明


 ycsb有幾個目錄需要注意下:
bin:
    - 目錄下有個可執行的ycsb文件,是個python腳本,是用戶操作的命令行接口。ycsb主邏輯是:解析命令行、設置java環境,加載java-libs,封裝成可以執行的java命令,並執行

workloads:
    - 目錄下有各種workload的模板,可以基於workload模板進行個性化修改

core:
    - 包含ycsb里各種核心實現,比如DB的虛擬類DB.java,各個db子類都要繼承該類;還有比如workload抽象類,如果我們要自定義workload實現也需要繼承該類

各種DB的目錄:
    - 比如mongo,redis等,里面包含了對應測試的源碼等。
    - 當ycsb mvn編譯后,會在對應的目錄下生成target文件,ycsb會加載對應target文件中的class類

2 使用

ycsb在執行的時候,分為兩階段:load階段 和 transaction階段

2.1 load階段

該階段主要用於構造測試數據,ycsb會基於參數設定,往db里面構造測試需要的數據,如:

1
. /bin/ycsb  load mongodb-async -s -P workloads /workloada  > outputLoad.txt

mongodb-async

在ycsb中,對於不同的db都有一些選項,比如mongo就有mongodb 和 mongodb-async。 
默 認的mongodb表示同步,即load和run使用同步的方式,ycsb會調用mongodb/src底下對應的MongodbClient實現對應的 insert/update等操作。如果設置了mongodb-async,ycsb會調用mongodb/src底下對應的 AsyncMongoDbClient.java實現

參數設置:

1
2
3
4
5
6
7
8
Options:
     -P  file         Specify workload  file  //  workload文件
     - cp  path       Additional Java classpath entries
     -jvm-args args Additional arguments to the JVM
     -p key=value   Override workload property  //  一些設置
     -s             Print status to stderr  //  把狀態達到stderr中
     -target n      Target ops /sec  (default: unthrottled)  //  每秒總共操作的次數
     -threads n     Number of client threads (default: 1)  //  客戶端線程數

參數解讀:

-P workload文件

在ycsb的目錄下有多種workload,參考:https://github.com/brianfrankcooper/YCSB/wiki/Core-Workloads,我們以workloada舉例子 
基礎配置:

1
2
3
4
5
6
7
8
9
10
11
12
recordcount=1000      # 總共的操作條數
operationcount=1000   # 總共操作的次數
workload=com.yahoo.ycsb.workloads.CoreWorkload=
 
readallfields= true   # 在讀取的時候,是否需要讀取所有字段
 
readproportion=0.5   # 讀取比例
updateproportion=0.5  # update比例
scanproportion=0
insertproportion=0
 
requestdistribution=zipfian

workloada的負載比較中,read和update類比例為1:1,里面一些設置參數如上,如果我們再設置mongo的時候,還需要再workload中增加對應的mongo配置,如下:

1
2
3
mongodb.url=mongodb: //192 .168.137.10:34001 /ycsb ?   # mongodb對應的uri等
mongodb.database=ycsb  # 對應的db
mongodb.writeConcern=normal  # 寫級別

-p選項

-p用於設置一些對應的參數,如果workload中的參數,也可以以-p的方式放在命令行中設置

-s

-s是表示,在運行中,把一些狀態打印到stderr中,一般status信息,用於表示在運行中的一些中間狀態(比如當前處理了多少請求,還有多少請求等)

-target n

表示1s中總共的操作次數(各個線程加起來的),如果性能不滿足,比如最高性能只有100,你設置了1000,那么ycsb會盡量往這個數目去靠近。默認是不做限制

-thread 線程數

設置ycsb client的並發測試線程數,默認是1,單線程,所以再測試的時候,一定要設置這個選項

2.2 transcation階段

在2.1load數據結束之后,ycsb就可以進行測試了,也就是transaction階段。在transaction階段,會基於workload中的比例設置,和線程參數設置進行db的壓測。具體參數如上


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM