YCSB效能測試工具使用
在網上查In-Memory NoSQL效能測試的資料時,偶然間發現了這個效能測試工具YCSB,全稱為“Yahoo! Cloud Serving Benchmark”。它內建了對常見NoSQL資料庫和資料網格產品的支援,如Cassandra、MongoDB、HBase、Redis、Infinispan等等很多的主流產品,而且不僅安裝使用簡單,還能自由擴充套件測試資料型別和支援的資料庫產品。
1 編譯安裝
首先說一下YCSB的安裝。直接下載tar.gz分發包的話其實也不需要安裝什麼,解壓後通過bin目錄下的指令碼執行即可(依賴python和JRE)。但由於tar.gz分發包比較大,一百多M,而且我這裡總是連線超時,於是直接下載master庫的原始碼,自己編譯。編譯方法也很簡單,因為工程是Maven管理的,所以只要有Maven環境就可以直接在YCSB根目錄下執行package任務,之後就能在distribution工程的target中看到ycsb-0.1.4.tar.gz。最後將編譯出的包拷貝到自己的環境如虛擬機器裡,就能使用了。本機除錯也是可以的,只需在IDE中配置好Client.main()方法的啟動引數就行了。
2 使用
現在來說一下如何使用YCSB,以Redis的效能測試為例,分為1.初始化測試資料 (loading階段)和2.執行測試操作(transaction階段)。首先進行初始化,先保證Redis服務已經啟動,然後在YCSB根目錄下執行:
> bin/ycsb load redis -s -P workloads/workloada -p "redis.host=127.0.0.1" -p "redis.port=6379"
之後我們在Redis中就能看到1000條資料,因為workloada中定義了recordcount=1000。每一個key都是hash型別,我們可以重執行上面的命令,將redis改為basic,basic是一種dummy客戶端,實際並不操作任何資料庫,而是將YCSB對資料庫的各種操作的key-value輸出到控制檯,這樣我們就能看到這些key-value是怎麼插入到Redis的,value都是什麼樣子的了。
繼續開始真正的測試:
> bin/ycsb run redis -s -P workloads/workloada -p "redis.host=127.0.0.1" -p "redis.port=6379" \
-threads 128 -p "operationcount=10000" -p "measurementtype=timeseries" \
-p "timeseries.granularity=5000"
簡單解釋一下這些引數:-threads是模擬的執行緒數,-p是傳入的引數,可以是客戶端的引數,可以是YCSB內部元件的引數,例如measurementtype會配置Measurements輸出時間序列而不是直方圖,也可以覆蓋workload檔案中預定義的引數,例如上面的operationcount。還有一個常用的引數是-target,指的是每秒最大運算元,當一秒內到達這個閾值,執行緒就會休眠1毫秒。
輸出的內容大概是這個樣子,主要關注總的執行時間、吞吐量,以及讀和寫的平均延遲:
[OVERALL], RunTime(ms), 60058.0
[OVERALL], Throughput(ops/sec), 27049.768557061507
[UPDATE], Operations, 812803
[UPDATE], AverageLatency(us), 2275.102034564341
[UPDATE], MinLatency(us), 616
[UPDATE], MaxLatency(us), 64614
[UPDATE], Return=0, 812800
[UPDATE], 0, 4529.805933250927
[UPDATE], 5000, 2208.521014693651
[UPDATE], 10000, 2148.7565276549426
[UPDATE], 15000, 2139.8536001184116
[UPDATE], 20000, 2205.0305368941204
[UPDATE], 25000, 2165.1238092653402
[UPDATE], 30000, 2180.7067298448014
[UPDATE], 35000, 2188.5334523973074
[UPDATE], 40000, 2145.7207987586858
[UPDATE], 45000, 2199.350677041509
[UPDATE], 50000, 2175.385860213585
[UPDATE], 55000, 2156.2515744608663
[READ], Operations, 811752
[READ], AverageLatency(us), 2304.3717539346994
[READ], MinLatency(us), 629
[READ], MaxLatency(us), 75380
[READ], Return=0, 811751
[READ], 0, 4634.609504308506
[READ], 5000, 2233.603889043769
[READ], 10000, 2179.2526166711627
[READ], 15000, 2165.0853859227886
[READ], 20000, 2234.4603871649133
[READ], 25000, 2178.2390324907783
[READ], 30000, 2208.70719241602
[READ], 35000, 2207.444112422369
[READ], 40000, 2173.767667054904
[READ], 45000, 2223.0628439478996
[READ], 50000, 2200.857439151695
[READ], 55000, 2178.257027425664
3 原始碼分析
YCSB的核心類都在Maven子模組core中,主要有Client、ClientThread、CoreWorkload、DB實現類等。
其主流程是:python指令碼bin/ycsb會呼叫Client類的main()方法,初始化Workload和DB的實現類,並根據-threads引數建立多個Client執行緒,-s引數建立一個Status執行緒。每個執行緒會迴圈recordcount或operationcount(在workloada中定義)除以threads次,並根據引數bin/ycsb load/run決定是初始化資料doInsert()還是執行讀寫操作doTransaction()。
4 新增新資料庫
1.新建module:在YCSB根目錄pom.xml下新增一個Maven子module,artifactId為xxx-binding(ycsb指令碼會根據這個名字字尾掃描jar包,加入到classpath中),而目錄名則為字首xxx。
2.配置pom.xml:開啟新建子module的pom.xml,加入<build>一段,這樣執行package任務後會在target目錄下生成一個包含了所有依賴的大jar包,這是maven-assembly外掛的功能。之後將core模組(因為下面我們要繼承DB類)和其他所有依賴項新增到pom.xml中。
3.新建DB子類:在此子module中新建package和類,繼承DB類。
4.打包module:執行package任務,在target下會生成一個xxx-binding.jar。拷貝到YCSB包下xxx-binding/lib目錄下。
5.執行測試:可以通過-db指定我們的DB類,或在ycsb Python指令碼中給我們的類加個別名。
轉載: http://blog.csdn.net/dc_726/article/details/43991871
相關文章
- 【PG效能測試】pgbench效能測試工具簡單使用
- 使用 fio 工具測試 EBS 效能
- JMeter效能測試工具使用入門JMeter
- 網路效能測試工具iperf的使用
- 效能測試工具 - Siege
- 效能測試工具Lmbench的使用和下載
- 移動效能測試---工具PerfDog簡單使用
- ABAP Webdynpro效能測試工具Web
- netperf網路效能測試工具的使用詳解
- 騰訊效能測試工具——PerfDog使用初體驗
- 效能測試工具你知道多少?
- java 效能測試框架工具-junitperfJava框架
- 負載,效能測試工具-Gatling負載
- 效能測試:主流壓測工具介紹
- 網站效能壓力測試工具:Apache ab使用詳解網站Apache
- 深入淺出開源效能測試工具 Locust (使用篇 2)
- 自己上手寫效能測試工具(二)
- Webapi管理和效能測試工具WebBenchmarkWebAPI
- sitespeedio前端效能測試工具介紹前端
- 谷歌效能測評工具lighthouse使用谷歌
- 測試工具-XPath使用
- PR效能測試工具升級到全鏈路效能測試與分析平臺
- 移動端效能測試必備工具 PerfDog 效能狗
- CentOS 下效能測試工具 wrk 安裝CentOS
- 測試網路效能的小工具
- 效能測試監控工具--Jmeter + Grafana + InfluxDBJMeterGrafanaUX
- 效能測試工具的 Coordinated Omission 問題
- 【網路】效能指標與測試工具指標
- Jmeter效能測試簡單使用JMeter
- 使用Loadrunner進行效能測試
- 介面測試工具和使用
- 效能測試——壓測工具locust——指令碼初步編寫指令碼
- Linux iperf 網路傳輸效能測試工具Linux
- 效能測試之JVM的故障分析工具VisualVMJVMLVM
- 使用 Sysbench 進行 Linux 效能測試Linux
- 使用profiler測試Oracle PL/SQL效能OracleSQL
- 使用lmbench測試linux效能-編譯Linux編譯
- Burpsuite 滲透測試工具使用UI
- 單元測試工具 TestNG 使用