使用YCSB測試mongodb分區叢集效能

來源:互聯網
上載者:User

標籤:

1. 測試載入器

    本次測試選取YCSB(Yahoo! Cloud System Benchmark)作為測試用戶端工具。YCSB是Yahoo開源的一個nosql測試載入器,用來測試比較各種nosql的效能,項目地址:https://github.com/brianfrankcooper/YCSB。項目的mongodb目錄下有詳細的安裝和測試方法。

    YCSB支援常見的nosql資料庫讀寫,如插入,修改,刪除,讀取等。它可以使用多線程來提高用戶端的效能。可以方便的自訂各種情境,如95%插入5%讀,或者90%讀5%更新5%插入等等。可以自訂資料請求分布方式:平均分布,zipfian(大約20%資料獲得80%訪問請求),最新資料。


2. 測試步驟

    1. 選擇用戶端線程數。使用YCSB測試,要選擇一個合適的線程數,否則測試的瓶頸可能在用戶端而不是資料庫,經過比較,大概100個線程時,YCSB達到最大效能。


    2.定義測試情境。本次測試的情境如下:

workloada 寫多讀少,90%插入,5%讀,5%更新。
workloadb 讀多寫少,95%讀,5%更新。
workloadc 讀多寫少,100%讀。
workloadd 讀多寫少,95%讀,5%插入。
workloadf 讀多寫少,50%讀,50%讀寫修改同一條記錄。
workloadg 讀多寫少,60%讀,20%讀,20%更新。



    3.測試不同數量記錄下的各種情境。分成兩個階段:


    1),load。載入資料。命令為:

    ./bin/ycsb load mongodb -threads 100 -s -P workloads/workloada -p mongodb.url=mongodb://mongos:28000/ycsb?w=0 > outputLoad.txt

    執行load 命令時,僅有recordcount參數起作用,如recordcount=60000000表示載入六千萬條記錄。執行run命令時,recordcount不起作用。mongos是叢集中mongos執行個體的ip地址。


    2),run。load資料完成後,各種情境運行測試。

    測試情境workloada,位於workloads目錄下:

    ./bin/ycsb run mongodb -threads 100 -s -P workloads/workloada -p mongodb.url=mongodb://mongos:28000/ycsb?w=0 > outputRun.txt

    每次load資料前要把上次測試中產生的資料刪除,包括各個分區,設定管理員,mongos等的資料。


3. 測試系統架構

    叢集設定管理員的3個執行個體部署在configs伺服器上,YCSB,mongos執行個體,shard1,shard2各自部署在一台伺服器。shard1和shard2都是單獨的mongodb instance,不是replicate set。mongodb 使用2.6版本。


4. 伺服器的配置

OS CPU RAM
YCSB ubuntu14.04 Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz 4核 1G
mongos Red Hat 4.4 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz 1核 8G
shards Red Hat 4.4 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz 1核 16G
configs ubuntu14.04 Intel(R) Core(TM) i5-4440 [email protected] 1核 1G

5. 測試結果

    表1, 一個分區,1百萬,1千萬,6千萬,1億記錄時各個情境的輸送量(ops/sec)。

    表2,兩個分區,1百萬,1千萬,6千萬記錄時各個情境的輸送量(ops/sec)。

資料量(百萬) workloada workloadb workloadc workloadd workloadf workloadg
1 4878 7352 7536 7885 2131 5986
10 4343 7282 7442 6996 2164 6119
60 1669 7242 7847 7810 2577 6054
100 157 7333 6796 7766 2082 4389

表1


資料量(百萬) workloada workloadb workloadc workloadd workloadf workloadg
1 6462 7416 7518 7633 2622 6777
10 5826 8198 7664 8073 2093 7376
60 5662 7707 7546 7716 2181 6540







表2


6. 測試結果分析

    圖1,一個分區時各個情境下輸送量隨記錄量的變化曲線。

    圖2,兩個分區時各個情境下輸送量隨記錄量的變化曲線。

    圖3,重寫情境(workloada) 不同分區數量的輸送量隨記錄量的變化曲線。

    圖4,重讀情境(workloadb) 不同分區數量的輸送量隨記錄量的變化曲線。

圖1


圖2


圖3


圖4

    由圖1,workloada可以看出,mongodb的寫效能率先達到瓶頸,隨著記錄數量增加,下降很快,而讀取的效能變化很小。

    由圖3和圖4,可以看出,當mongodb遇到寫瓶頸時,增加分區,大大增加寫效能,少量增加讀效能。

    可能由於資料量,或者YCSB的瓶頸,測試中mongodb讀效能未出現瓶頸。

7.結論

    1.Mongodb的讀效能很高,適合重讀的情境。

    2.通過增加分區,可以大大增加mongodb叢集的寫效能, 部分增加讀效能。

    3.與關係型資料庫相比,mongodb 的優勢

    • 文檔型資料庫,json風格的檔案儲存體,結構清晰,無需ORM。

    • 複製和高可用性,易於擴充。

    • 自動分區

    • 使用基於文檔的查詢語言,有一定的查詢能力。

    • 任何屬性可索引。

    所以對於不太複雜的查詢情境下,mongodb可以很方便的作為mysql的替代方案,提高db的讀寫能力。對於巨量資料情境,內容管理和交付平台,使用者資料管理中心,日誌平台等都適合使用mongodb。


使用YCSB測試mongodb分區叢集效能

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.