使用COSBench工具對ceph s3接口進行壓力測試


一、COSBench安裝

COSBench是Intel團隊基於java開發,對雲存儲的測試工具,全稱是Cloud object Storage Bench

吐槽下,貌似這套工具是intel上海團隊開發的,竟然沒有中文的相關資料。

同所有的性能測試工具一樣,COSBench也分控制台和發起請求的driver,且driver可以分布式部署。可以支持swift、s3、Openstack等接口

1、 下載COSBench工具

下載地址為:https://github.com/intel-cloud/cosbench,一定要下載最新的包
不然可能會運行失敗,本人就遇到啟動失敗的問題

2、 下載完成后,將包放至linux任意目錄中,進行解壓unzip xxx.zip

3、 解壓后,里面有說明文檔:COSBenchUserGuide.pdf,不過是英文的

4、 安裝第三方裝件,在centos下,需要安裝java 和curl

yum install java curl

COSBench底層調用了linux nc來做數據分析,所以如果linux沒裝nc的需要手工安裝nc

5、 解壓完成后,cd進入目錄,如目錄最新版本的示例0.4.2.c3,將sh文件賦予執行權限,這里使用http協議進行發送命令

[root@test_rbd_01]# cd 0.4.2.c3
[root@test_rbd_01 0.4.2.c3]# chmod +x *.sh
[root@test_rbd_01 0.4.2.c3]# unset http_proxy

二、 啟動

直接運行./start_all.sh文件,會同時將control、driver同時運行,但driver只能在一台上啟動,后續會說添加多台driver

啟動成功后輸入http://127.0.0.1:19088/controller/index.html就會出現頁面,如果是在windows上查看,這里的ip需要換成linux的本機IP地址,並確定19088端口是放行的。

如下圖所示:

在這里遇到一個問題,每次啟動后時區都顯示不對,且發起請求后,時間也會更改,原來是要修改啟動腳本cosbench-start.sh

修改java啟動如下:

/usr/bin/nohup java  -Duser.timezone=Asia/Shanghai -Dcosbench.tomcat.config=$TOMCAT_CONFIG -server -cp main/* org.eclipse.equinox.launcher.Main -configuration $OSGI_CONFIG -console $OSGI_CONSOLE_PORT 1> $BOOT_LOG 2>&1 &

三、配置

Control.conf的配置

配置基本信息及driver信息,

注意,driver必須以driver<n>的形式添加,不然無法識別,如下:

[driver1]
name = driver1
url = http://*.11:18088/driver

[driver2]
name = driver2
url = http://*.12:18088/driver

[driver3]
name = driver3
url = http://*.13:18088/driver

[driver4]
name = driver4
url = http://*.14:18088/driver

 

Driver.conf的配置

配置你需要發起壓力的dirver,可以不啟動,如果沒有啟動,在controller overview中將看不到driver

如果要在不同機器啟動dirver,需要分別運行start-driver.sh,並確保通信是否正常,可以通過 curl http://<dirver-host>:18088/driver/index.html確定通信是否正常

四、 腳本配置

有很多模板的例子,在conf目錄下,如librados-config-sample.xml、s3-config-sample.xml

這里只測試s3的接口,所以先關注s3的相關配置

S3的配置在頁面上選擇時沒有顯示出來,所以我們就進行手工配置

<workstage name="prepare">
<storage type="s3" config="accesskey=<accesskey>;secretkey=<scretkey>;proxyhost=<proxyhost>;proxyport=<proxyport>;endpoint=<endpoint>" />
      <work type="prepare" workers="1" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,10);sizes=c(64)KB" />
</workstage>

配置的說明如下(參考userGuide.pdf)

<workstage name="prepare">

屬性 類型 默認值 備注
Name  String   名字,隨便取
<work type="prepare" workers="1" config="cprefix=s3testqwer;containers=r(1,2);objects=r(1,10);sizes=c(64)KB" />

這里插入pdf中的說明:

對於s3接口來說,一般有下面幾種work type: init、prepare、dispose、cleanup,具體可以參考demo文檔

這里給出幾個示例配置文檔:

創建buckets

- <workload name="initBucket" description="sample benchmark for s3">
  <storage type="s3" config="accesskey=V02TU7BTTHYSVINSRB7P;secretkey=b2u6ZgiNVlnfsDUpBigEbZKX9Na7kvM7UWEMrtPN;endpoint=http://xx.xx.xx.xx/" /> 
- <workflow>
- <workstage name="init_create_bucket">
  <work type="init" workers="1" config="cprefix=test;containers=r(1,2)" /> 
  </workstage>
  </workflow>
  </workload>

 

獲取數據

<?xml version="1.0" encoding="UTF-8" ?> 
- <workload name="get-100Workers-64k" description="sample benchmark for s3">
  <storage type="s3" config="accesskey=V02TU7BTTHYSVINSRB7P;secretkey=b2u6ZgiNVlnfsDUpBigEbZKX9Na7kvM7UWEMrtPN;endpoint=http://xx.xx.xx.xx/" /> 
- <workflow>
- <workstage name="get 64k data with 100 workers">
- <work name="Get64KBData" workers="25" totalOps="75000" driver="sv40">
  <operation type="read" ratio="100" config="cprefix=test;oprefix=100wks_64k;containers=c(1);objects=u(1,75000)" /> 
  </work>
  </workstage>
  </workflow>
  </workload>

這里的workers表示並發數,totalOps表示總的操作數,driver為不同的壓力機器,根據userGuide文檔,里面有很多參數可選,如下:

屬性 類型 默認值 說明
workers 整型 必須配 並發數
interval   整型 5s

間隔時間

division   字符 "none" 可選:[“none”|
“container”|
“object”]
runtime   整型 0 運行多長時間
rampup 整型 0

多長時間啟動完后所有的並發,與jmeter

中類似,與runtime沖突,不能一起配

rampdown 整型 0 結束數,與runtime也不能一起配

 

 

上傳數據

<?xml version="1.0" encoding="UTF-8" ?> 
- <workload name="put-100Workers-4MB" description="sample benchmark for s3">
  <storage type="s3" config="accesskey=V02TU7BTTHYSVINSRB7P;secretkey=b2u6ZgiNVlnfsDUpBigEbZKX9Na7kvM7UWEMrtPN;endpoint=http://x.x.x.x/" /> 
- <workflow>
- <workstage name="put 4MB data with 100 workers">
- <work name="Put64KBData1" workers="25" totalOps="75000" driver="sv40">
  <operation type="write" ratio="100" config="cprefix=test;oprefix=100wks_64k;containers=c(1);objects=s(1,75000);sizes=c(4)MB" /> 
  </work>
  </workstage>
  </workflow>
  </workload>

 

五、查看結果

下圖為測試完成后的一個結果截圖

從圖中我們可以看到與任務一個壓力工具都是的指標

1、Avg-ResTime  響應平均時間

2、Avg-ProcTime 平均處理時間

3、Throughput:吞吐量,也就是我們常說的TPS

4、bandwith:帶寬

5、succ-ratio :成功數

 

結果都是放在”archive”目錄下了

這里有一個遺憾點是,性能測試中的資源監控沒辦法加入,比如cpu內存之類的,只能自己寫腳本收集數據。


免責聲明!

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



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