COSBench


簡介

 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)查看執行狀態


免責聲明!

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



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