Hamge

学习记录

导航

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)查看执行状态

posted on 2022-02-15 11:29  Hamge  阅读(1560)  评论(0编辑  收藏  举报