COSBench是Intel團隊基於java開發,對雲存儲的測試工具,全稱是Cloud object Storage Benchhtml
吐槽下,貌似這套工具是intel上海團隊開發的,居然沒有中文的相關資料。java
同全部的性能測試工具同樣,COSBench也分控制檯和發起請求的driver,且driver能夠分佈式部署。能夠支持swift、s三、Openstack等接口linux
下載地址爲:https://github.com/intel-cloud/cosbench,必定要下載最新的包
否則可能會運行失敗,本人就遇到啓動失敗的問題git
yum install java curl
COSBench底層調用了linux nc來作數據分析,因此若是linux沒裝nc的須要手工安裝ncgithub
[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只能在一臺上啓動,後續會說添加多臺driverswift
啓動成功後輸入http://127.0.0.1:19088/controller/index.html就會出現頁面,若是是在windows上查看,這裏的ip須要換成linux的本機IP地址,並肯定19088端口是放行的。windows
以下圖所示:centos
在這裏遇到一個問題,每次啓動後時區都顯示不對,且發起請求後,時間也會更改,原來是要修改啓動腳本cosbench-start.shtomcat
修改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>
下圖爲測試完成後的一個結果截圖
從圖中咱們能夠看到與任務一個壓力工具都是的指標
一、Avg-ResTime 響應平均時間
二、Avg-ProcTime 平均處理時間
三、Throughput:吞吐量,也就是咱們常說的TPS
四、bandwith:帶寬
五、succ-ratio :成功數
結果都是放在」archive」目錄下了
這裏有一個遺憾點是,性能測試中的資源監控沒辦法加入,好比cpu內存之類的,只能本身寫腳本收集數據。