日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用YCSB检测MongoDB

發(fā)布時(shí)間:2025/3/8 编程问答 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用YCSB检测MongoDB 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

英文原文:

http://blog.mongodirector.com/how-to-benchmark-mongodb-with-ycsb/

?

當(dāng)談到系統(tǒng)性能特性,大多數(shù)DBaaS提供商提供他們預(yù)置系統(tǒng)的有限信息。的確,基于在這樣一個(gè)系統(tǒng)下給定的大量參數(shù)的部署,很難準(zhǔn)確的討論云的實(shí)際吞吐量和延時(shí)。虛擬化環(huán)境、不可預(yù)測的負(fù)載、網(wǎng)絡(luò)延時(shí)、不同地址位置只是考慮的一部分。

?

然而對(duì)于你的MongoDB部署的真實(shí)性能有一個(gè)公正的理解是個(gè)好注意:以至于你可以基于你的應(yīng)用需求準(zhǔn)確預(yù)置;以至于你可以真實(shí)的比較大量的DBaaS提供商,確保最實(shí)惠。


這篇博文是在你的MongoDB集群上運(yùn)行一些基本的性能檢測的入門。詳細(xì)講述如何配置和運(yùn)行YCSB基準(zhǔn)測試并解釋了結(jié)果。靈感來自于當(dāng)前的MongoDB博客關(guān)于MongoDB 3.0性能提高。


YCSB是一個(gè)流行的Java開源規(guī)范和由雅虎開發(fā)的程序套件,用于比較大量NoSQL數(shù)據(jù)庫的相對(duì)性能。這些工作負(fù)載用于大量NoSQL數(shù)據(jù)庫的比較研究。

?

部署YCSB


這部分和接下來的部分將會(huì)引導(dǎo)你,在你鐘愛的DBaaS提供商系統(tǒng)上,一步步安裝、配置和運(yùn)行YCSB測試。


為了運(yùn)行負(fù)載測試,你需要一個(gè)客戶端機(jī)器,與你的MongoDB集群在相同的地理位置最好,可以避免網(wǎng)絡(luò)延時(shí)。選擇一個(gè)合適的配置運(yùn)行多線程,恰當(dāng)?shù)募虞d你的MongoDB集群。該機(jī)器需要安裝有當(dāng)前版本的Java、Maven和git。


步驟:

  • 如果Java、Maven或git還沒有在你的系統(tǒng)上安裝,安裝他們。參照你的操作系統(tǒng)對(duì)應(yīng)的可用文檔。確保安裝了與你的Java版本兼容的Maven版本。測試所有的依賴正常工作。例如:

1 $?javac?-version
1 javac?1.8.0_25
1 $?mvn?-version
1 2 3 4 5 6 Apache?Maven?3.3.1?(cab6659f9874fa96462afef40fcf6bc033d58c1c;?2015-03-14T01:40:27+05:30) Maven?home:?/usr/local/Cellar/maven/3.3.1/libexec Java?version:?1.8.0_25,?vendor:?Oracle?Corporation Java?home:?/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/jre Default?locale:?en_US,?platform?encoding:?UTF-8 OS?name:?"mac?os?x",?version:?"10.10.2",?arch:?"x86_64",?family:?"mac"
1 $?git?-version
1 git?version?1.9.5?(Apple?Git-50.3)
  • 正如Github頁YCSB的建議,你可以wget下YCSB的tar壓縮包。但是我們推薦從源文件構(gòu)建。步驟已在YCSB的MongoDB README文檔化。這將幫助我們之后對(duì)云提供商啟用MongoDB驗(yàn)證。

1 2 3 git?clone?git://github.com/brianfrankcooper/YCSB.git cd?YCSB mvn?clean?package
  • 注意:如果你的`mvn clean package`或`mvn clean install`命令失敗,根據(jù)位于“mapkeeper”包的錯(cuò)誤,在pom.xml的root層刪除或注釋“mapkeeper”條目的兩個(gè)實(shí)例。查看這里Github問題獲取更多信息。

  • 一旦構(gòu)建成功,我們現(xiàn)在準(zhǔn)備運(yùn)行YCSB測試!


啟用驗(yàn)證

大多數(shù)MongoDB提供商默認(rèn)提供MongoDB驗(yàn)證并無法禁用它。不幸的是,YCSB當(dāng)前不支持MongoDB驗(yàn)證。客戶端實(shí)現(xiàn)現(xiàn)在主要使用廢棄的API調(diào)用。為了滿足我們的需求,我們添加了一個(gè)新的MongoDB專屬YCSB屬性,'mongodb.auth'和幾行代碼支持它。這個(gè)修改非常簡單并且在這里可以找到不同。默認(rèn)MongoDB專屬YCSB屬性在這里列出。


再次使用mvn構(gòu)建包,修改完成。參考上面部分關(guān)于如何使用Maven構(gòu)建YCSB。

?

運(yùn)行測試


YCSB wiki這部分詳細(xì)列出了接下來的活動(dòng)。我們將在這里簡要描述下。

  • 下一步是選擇你要運(yùn)行的負(fù)載類型。花時(shí)間閱讀和理解YCSB wiki的核心負(fù)載部分。它們總結(jié)在這里:

    • 負(fù)載A:重更新負(fù)載:50/50%混合讀/寫

    • 負(fù)載B:讀為主負(fù)載:95/5%混合讀/寫

    • 負(fù)載C:只讀:100%讀

    • 負(fù)載D:最新讀負(fù)載:更多流量在當(dāng)前插入

    • 負(fù)載E:短距離:短程查詢

    • 負(fù)載F:讀-修改-寫:讀、修改和更新存在的記錄

  • 顯然個(gè)體工作負(fù)載可以使用核心屬性調(diào)整。你可能想選擇一個(gè)負(fù)載,調(diào)整屬性匹配你應(yīng)用程序的特性。例如,對(duì)比研究選擇了大批有趣的“調(diào)整過的”負(fù)載。也參考了在第一部分提到的MongoDB博客。例如,對(duì)于我們的測試我們將采用負(fù)載A帶有默認(rèn)讀/寫比率。

  • 選擇操作的數(shù)量(屬性“operationcount”)以致測試運(yùn)行適當(dāng)?shù)臅r(shí)間。30分鐘內(nèi)完成測試不是系統(tǒng)一般性能的好的指示。

  • 選擇適當(dāng)數(shù)量的YCSB運(yùn)行的線程。這真的依賴于你的客戶端機(jī)器有多好,你的MongoDB集群可以承受多少負(fù)載和你的實(shí)際應(yīng)用多么有代表性。我們將對(duì)大量的線程運(yùn)行基準(zhǔn)測試。

  • 運(yùn)行負(fù)載階段。選擇一個(gè)接近你想運(yùn)行的操作數(shù)量的記錄數(shù)量(屬性“recordcount”)來插入數(shù)據(jù)庫。選擇適當(dāng)數(shù)量的線程以便插入不會(huì)花費(fèi)很長時(shí)間。例如:

1 2 3 ./bin/ycsb?load?mongodb?-s?-P?workloads/workloada?-p?recordcount=10000000?-threads?16?-p mongodb.url="mongodb://user:pwd@server1.example.com:9999,server2.example.com:9999/dbname"?-p mongodb.auth="true"

    • ‘load‘標(biāo)記表名它是一個(gè)導(dǎo)入操作。

    • ‘s‘標(biāo)記以10秒的間隔打印狀態(tài)。

    • ‘recordcount‘被設(shè)置為1千萬。

    • ‘threads‘設(shè)置客戶端線程數(shù)量為16

    • ‘mongodb.auth‘是啟用MongoDB驗(yàn)證的屬性。

  • 記得

    • 重定向標(biāo)準(zhǔn)輸出到一個(gè)文件

    • 使用‘screen‘或一個(gè)等價(jià)的方法,以便當(dāng)運(yùn)行這些操作的時(shí)候你的會(huì)話不會(huì)丟失。

  • 一旦數(shù)據(jù)導(dǎo)入階段完成,你準(zhǔn)備運(yùn)行你的負(fù)載。例如:

1 2 3 ./bin/ycsb?run?mongodb?-s?-P?workloads/workloada?-p mongodb.url="mongodb://user:pwd@server1.example.com:9999,server2.example.com:9999/dbname"?–p mongodb.auth="true"?-p?operationcount=10000000?-threads?2
  • 使用大量的線程重復(fù)運(yùn)行。記住重定向結(jié)果以便你之后可以比較它們。例如,我們用2、4、8、16和32個(gè)線程重復(fù)測試。

?

分析結(jié)果


這篇YCSB?wiki頁面的最后部分談到了分析結(jié)果。最有趣的一些信息是整體吞吐量(Overall Throughput)和95/99%百分比延時(shí)(Percentile Latencies)。直到當(dāng)收益變平和延時(shí)不可接受時(shí),通常增加線程數(shù)量增加了吞吐量。例如,這張圖描述了對(duì)一個(gè)我們要檢測的測試系統(tǒng),吞吐量和延時(shí)和線程數(shù)的對(duì)比。選擇的負(fù)載是負(fù)載A和大約3百萬操作。

Throughput/Latency vs #Threads


對(duì)于MongoDB服務(wù)器從負(fù)載的角度,從圖中可以推斷出16個(gè)線程也能是熱點(diǎn)區(qū)域:超過了它,對(duì)于線程數(shù)呈指數(shù)增長,吞吐量的線是平的,而延時(shí)變得無法接受的大。

?

一些觀點(diǎn):

  • 為了云上系統(tǒng)性能的更好的圖片,自動(dòng)化并重復(fù)這些測試應(yīng)該在一天的不同點(diǎn)。我們注意到性能的特性會(huì)在這一天顯著變化。

  • 當(dāng)比較兩個(gè)潛在的DBaaS提供商,確保在相同的地理位置選擇你的客戶端機(jī)器和DBaaS集群。集群應(yīng)該有類似的配置。也要記住在一天的不同時(shí)間運(yùn)行測試。

?

接下來


這是一些我們需要研究的事情,因?yàn)槲覀冊(cè)谶@個(gè)方面做了更多工作:

  • 從多臺(tái)機(jī)器并行運(yùn)行負(fù)載:當(dāng)嘗試加載一個(gè)高容量的MongoDB集群,單一一臺(tái)客戶端機(jī)器無法滿足。YCSB當(dāng)前沒有提供容易的方法并行從多臺(tái)機(jī)器運(yùn)行負(fù)載。然而可以手動(dòng)完成。當(dāng)嘗試加載數(shù)據(jù)到一個(gè)大型集群時(shí)也是有用的。

  • 數(shù)據(jù)集大小:數(shù)據(jù)庫的大小相對(duì)MongoDB系統(tǒng)的內(nèi)存將完全改變吞吐量/延時(shí)特性,對(duì)于大型數(shù)據(jù)集MongoDB只得命中磁盤。

  • 個(gè)體記錄的大小:當(dāng)記錄尺寸很大,尤其當(dāng)它接近最大支持的尺寸時(shí),對(duì)于性能特性是有趣的。這可能對(duì)主要做讀-修改-回寫操作(像負(fù)載F)的應(yīng)用程序是關(guān)鍵性的。

  • 不同的MongoDB驅(qū)動(dòng):因?yàn)槲覀儺?dāng)前正對(duì)比較兩個(gè)不同的DBaaS提供商感興趣,我們沒有嘗試使用更多有效的數(shù)據(jù)庫驅(qū)動(dòng)。顯然使用最新和更有效的驅(qū)動(dòng)可以獲得更好的絕對(duì)數(shù)。對(duì)應(yīng)用程序嘗試抽取系統(tǒng)的最后價(jià)值是有趣的。這篇博文談到了使用一個(gè)異步的MongoDB驅(qū)動(dòng)通過YCSB的性能提升度量。

  • 不同的檢測工具:Sysbench對(duì)于MongoDB我們發(fā)現(xiàn)是有趣的。我們正在看其他的。















本文轉(zhuǎn)自UltraSQL51CTO博客,原文鏈接:http://blog.51cto.com/ultrasql/1740989 ,如需轉(zhuǎn)載請(qǐng)自行聯(lián)系原作者

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的使用YCSB检测MongoDB的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。