【轉】使用YCSB測試Mongodb性能的方法簡介


    YCSB(Yahoo! Cloud Serving Benchmark)是雅虎開源的一款通用的性能測試工具。通過這個工具我們可以對各類NoSQL產品進行相關的性能測試,包括:HBase、Cassandra、Mongodb、Voldemort、Redis等。通過配置workload文件,YCSB可以靈活的模擬不同的測試負載和讀寫模式,以下為YCSB測試Mongo性能步驟的簡單總結。
 
       首先,下載YCSB。在YCSB的github項目下可以查看和下載最新源碼和所有Tag版本,目前最新的Tag版本為0.1.4(https://github.com/brianfrankcooper/YCSB/archive/0.1.4.zip)。下載后的ycsb-0.1.4.zip解壓縮后即可直接使用,無需編譯安裝。在解壓后的目錄下,主要使用的兩個目錄是bin和workloads,前者包含了ycsb可執行文件,后者包含了工具自帶的各類workload文件。
 
       
mongodb.url=mongodb://localhost:27017 # 待測試mongo實例的數據庫地址
mongodb.database=ycsb # 測試時使用的數據庫名稱
mongodb.writeConcern=normal # 寫入安全性為常規
recordcount=10000000 # 測試數據集的記錄條數
operationcount=10000000 # 測試過程中執行的操作總數
workload=com.yahoo.ycsb.workloads.CoreWorkload # workload實現類
readallfields=true # 查詢時是否讀取記錄的所有字段
readproportion=0.5 # 讀操作的百分比
updateproportion=0.5 # 更新操作的百分比
scanproportion=0 # 掃描操作的百分比
insertproportion=0 # 插入操作的百分比 
requestdistribution=zipfian # 請求分布模式
 
       再次,運行YCSB。YCSB的運行分為兩個階段:測試數據加載階段和測試操作執行階段,前者用來加載測試數據集,后者用來執行正真的測試操作,兩個階段都要使用上面的配置文件。數據加載的執行命令為:./bin/ycsb load mongodb -threads 100 -P workloads/workloada,即根據workloada的配置要求啟動100個線程並發加載測試數據,在執行完成后YCSB會打印出類似於下面的數據加載性能統計數據:
[OVERALL], RunTime(ms), 905346.0 # 數據加載所用時間(毫秒)
[OVERALL], Throughput(ops/sec), 11045.500836144412 # 加載操作的吞吐量(ops/sec)
[INSERT], Operations, 10000000 # 執行insert操作的總數
[INSERT], AverageLatency(us), 9024.8155659 # 每次insert操作的平均延時(微秒)
[INSERT], MinLatency(us), 139 # 所有insert操作的最小延時(微秒)
[INSERT], MaxLatency(us), 1022876 # 所有insert操作的最大延時(微秒)
[INSERT], 95thPercentileLatency(ms), 27 # 95%的insert操作延時在27毫秒以內
[INSERT], 99thPercentileLatency(ms), 42 # 99%的insert操作延時在42毫秒以內
[INSERT], Return=0, 10000000 # 成功返回數10000000
[INSERT], 0, 3793117 # 以下insert操作在各個延時時間區域的分布情況
[INSERT], 1, 37171
[INSERT], 2, 8035
[INSERT], 3, 6294
...
[INSERT], 999, 0
[INSERT], >1000, 5
執行壓力測試的命令為:./bin/ycsb run mongodb -threads 100 -P workloads/workloada,即根據workloada的配置要求啟動100個線程並發執行測試操作,在執行完成后YCSB會打印出類似於下面的性能統計數據,統計項說明可參照上文:
[OVERALL], RunTime(ms), 526774.0
[OVERALL], Throughput(ops/sec), 18983.472988416284
[UPDATE], Operations, 500675
[UPDATE], AverageLatency(us), 6493.521553902232
[UPDATE], MinLatency(us), 147
[UPDATE], MaxLatency(us), 1096742
[UPDATE], 95thPercentileLatency(ms), 18
[UPDATE], 99thPercentileLatency(ms), 62
[UPDATE], Return=0, 500675
[UPDATE], 0, 62719
[UPDATE], 1, 69850
...
[UPDATE], 999, 0
[UPDATE], >1000, 16
[READ], Operations, 9499325
[READ], AverageLatency(us), 5173.494588510236
[READ], MinLatency(us), 87
[READ], MaxLatency(us), 1113170
[READ], 95thPercentileLatency(ms), 17
[READ], 99thPercentileLatency(ms), 54
[READ], Return=0, 9499325
[READ], 0, 3394330
[READ], 1, 1187011
...
[READ], 999, 1
[READ], >1000, 294
 
 


免責聲明!

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



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