簡介
COSBench 是一款由 Intel 開源,用於對象存儲的壓測工具。兼容 S3 協議的對象存儲系統,可使用該工具進行讀寫性能壓測。
系統環境
工具需運行在 CentOS 7.0 及其以上版本。
影響性能的因素
- 機器核心數:機器核心數較少,開啟的 worker 數目較多,容易在上下文切換上產生大量的開銷,建議采用32或64核進行壓測。
- 機器網卡:機器流出的流量受網卡限制,大文件的流量壓力測試,建議采用萬兆以上的網卡。
- 請求網絡鏈路:外網鏈路質量不一,同時外網下載會產生外網下行流量費用,建議同地域使用內網訪問。
- 測試時間:性能測試時,建議測試時間適當延長,獲取一個較為穩定的數值。
- 測試環境:程序運行的 JDK 版本,同樣也會影響性能。例如測試 HTTPS,低版本客戶端的加密算法存在 GCM BUG,隨機數發生器可能存在鎖等問題。
環境搭建
1)、從 COSBench GitHub 網站下載 COSBench 0.4.2.c4 壓縮包,並在服務器上進行解壓。解壓后進入目錄給shell命令文件賦予權限。
chmod +x *.sh
2)、安裝 COSBench 的依賴庫,執行如下命令。需要java-jdk環境 、 nmap-ncat、curl。
yum install nmap-ncat java curl java-1.8.0-openjdk-devel -y
3)、4、編輯 cosbench-start.sh 文件,在 Java 啟動行添加如下參數,關閉 s3 的 md5 校驗功能
'-Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true'
4)、啟動cosbench[單driver],在文件夾目錄下執行相關的啟動命令,可以直接啟動controller和driver
./start-all.sh
5)、多driver配置[單controller,多driver]
①、每台機器都需要有相關的cosbench環境。
②、選中其中一台為controller,controller可以和driver並存。
③、到每一台機器上啟動driver,controller節點上可以暫不啟動。
./start-driver.sh
④、配置controller,到對應的節點,進入目錄的conf/目錄下修改controller.conf文件。如下:
[controller]
drivers = 3
log_level = INFO
log_file = log/system.log
archive_dir = archive
[driver1]
name=driver1
url=http://182.99.0.135:18088/driver
[driver2]
name=driver2
url=http://182.99.0.139:18088/driver
[driver3]
name=driver3
url=http://182.99.0.141:18088/driver
⑤、啟動controller節點上的服務(controller和driver)
./start-all.sh
測試階段
1、編輯 s3-config-sample.xml 文件並添加任務配置信息,任務配置主要包含如下五個階段
init 階段:創建存儲桶。
prepare 階段:worker 線程,PUT 上傳指定大小的對象,用於 main 階段讀取。
main 階段:worker 線程混合讀寫對象,運行指定時長。
cleanup 階段,刪除生成的對象。
dispose 階段:刪除存儲桶。
2、示例
<?xml version="1.0" encoding="UTF-8" ?> <!--測試文件命名--> <workload name="s3-50M-sample" description="sample benchmark for s3"> <!--用戶信息填寫ak、sk、endpoint--> <storage type="s3" config="accesskey=8TJPTX59DD1NKIVNI00I;secretkey=lHRuDRBaXRZOW5t1yYiGJnvxqPndIgQO3TEmg426;endpoint=http://10.30.250.94:8002" /> <!--工作流--> <workflow> <!--建桶--> <workstage name="init"> <work type="init" workers="10" config="cprefix=examplebucket;csuffix=-1250000000;containers=r(1,10)" /> </workstage> <!--填充數據--> <workstage name="prepare"> <work type="prepare" workers="100" config="cprefix=examplebucket;csuffix=-1250000000;containers=r(1,10);objects=r(1,1000);sizes=c(50)MB" /> </workstage> <!--測試內容(讀/寫)--> <workstage name="main"> <work name="main" workers="100" runtime="300"> <operation type="read" ratio="50" config="cprefix=examplebucket;csuffix=-1250000000;containers=u(1,10);objects=u(1,1000)" /> <operation type="write" ratio="50" config="cprefix=examplebucket;csuffix=-1250000000;containers=u(1,10);objects=u(1000,2000);sizes=c(50)MB" /> </work> </workstage> <!--數據文件清除--> <workstage name="cleanup"> <work type="cleanup" workers="10" config="cprefix=examplebucket;csuffix=-1250000000;containers=r(1,10);objects=r(1,2000)" /> </workstage> <!--桶刪除--> <workstage name="dispose"> <work type="dispose" workers="10" config="cprefix=examplebucket;csuffix=-1250000000;containers=r(1,10)" /> </workstage> </workflow> </workload>
3、相關參數說明
參數 |
描述 |
accesskey、secretkey |
密鑰信息,分別替換為用戶的 SecretId 和 SecretKey |
cprefix |
存儲桶名稱,例如 examplebucket |
csuffix |
用戶的 APPID,需注意 APPID 前面帶上符號-,例如 -1250000000 |
runtime |
壓測運行時間 |
ratio |
讀和寫的比例 |
workers |
壓測線程數 |
相關參數數據可參考:https://www.cnblogs.com/luxf0/p/13320972.html?utm_source=tuicool
4、執行以下命令提交任務
sh cli.sh submit conf/s3-config-sample.xml
或是在html界面提交對應的xml測試配置文件
5、任務進度及結果
sh cli.sh submit conf/s3-config-sample.xml
或是在html界面提交對應的xml測試配置文件
4、任務進度及結果
1)、通過該網址http://ip:19088/controller/index.html(ip 替換為用戶的壓測機器 IP)查看執行狀態