文章 89
评论 0
浏览 461232
对象存储压力性能测试工具

对象存储压力性能测试工具

一、Cosbench工具

cosbench是intel开源的针对对象存储开发的测试工具

二、Cosbench安装

运行环境:centos7

依赖软件:JDK nmap-ncat

2.1 单台压测服务器部署

#安装依赖
[16:52:30 root@centos7 ~]#yum install java nmap-ncat

#下载cosbench工具压缩包
[16:58:41 root@centos7 ~]#ls
0.4.2.c4  0.4.2.c4.zip
[16:59:00 root@centos7 ~]#unzip 0.4.2.c4.zip

#删除http_proxy环境变量
[17:00:04 root@centos7 ~]#unset http_proxy

#启动cosbench
[17:02:09 root@centos7 0.4.2.c4]#bash ./start-all.sh

2.2 多台测试客户端部署

#配置多个driver
[17:05:07 root@centos7 0.4.2.c4]#cat conf/controller.conf
[controller]
drivers = 2
log_level = INFO
log_file = log/system.log
archive_dir = archive

[driver1]
name = driver1
url = http://127.0.0.1:18088/driver

[driver2]
name = driver2
url = http://192.168.10.71:18088/driver

#启动服务
[17:05:07 root@centos7 0.4.2.c4]#bash start-all.sh

#在其他客户端只启动driver
[17:07:14 root@centos7 0.4.2.c4]#bash start-driver.sh

2.3 web管理端

访问控制端的19088的controller

三、使用教程

进入conf目录下,查看s3-config-sample.xml配置文件内容如下:

  • workload name:测试时显示的任务名称,这里可以自行定义
  • description:描述信息
  • storage type:存储类型,这里默认s3
  • config:对该类型的配置,accesskey访问accesskey,secretkey访问secretkey,endpoint访问的API
  • workstage name : cosbench是分阶段按顺序执行,此处为init初始化阶段,主要是进行bucket的创建,workers表示执行该阶段的时候开启多少个工作线程,创建bucket通过不会计算为性能,所以单线程也可以;config处配置的是存储桶bucket的名称前缀;containers表示轮询数,上例中将会创建以s3testqwer为前缀,后缀分别为1和2的bucket
  • prepare阶段 : 配置为bucket写入的数据,workers和config以及containers与init阶段相同,除此之外还需要配置objects,表示一轮写入多少个对象,以及object的大小。
  • main阶段 : 这里是进行测试的阶段,runtime表示运行的时间,时间默认为秒
  • operation type : 操作类型,可以是read、write、delete等。ratio表示该操作所占有操作的比例,例如上面的例子中测试读写,read的比例为80%,write的比例为20%; config中配置bucket的前缀后缀信息。注意write的sizes可以根据实际测试进行修改
  • cleanup阶段 : 这个阶段是进行环境的清理,主要是删除bucket中的数据,保证测试后的数据不会保留在集群中
  • dispose阶段 : 这个阶段是删除bucket
#修改后的文件
<?xml version="1.0" encoding="UTF-8" ?>
<workload name="s3-sample" description="sample benchmark for s3">

  <storage type="s3" config="accesskey=minioadmin;secretkey=minioadmin;endpoint=http://192.168.10.71:9000" />

  <workflow>

    <workstage name="init">
      <work type="init" workers="1" config="cprefix=s3testqwer;containers=r(1,2,3)" />
    </workstage>

    <workstage name="prepare">
      <work type="prepare" workers="1" config="cprefix=s3testqwer;containers=r(1,2,3);objects=r(1,100);sizes=c(1024)KB" />
    </workstage>

    <workstage name="main">
      <work name="main" workers="8" runtime="60">
        <operation type="read" ratio="70" config="cprefix=s3testqwer;containers=u(1,2,3);objects=u(1,100)" />
        <operation type="write" ratio="30" config="cprefix=s3testqwer;containers=u(1,2,3);objects=u(101,200);sizes=c(1024)KB" />
      </work>
    </workstage>

    <workstage name="cleanup">
      <work type="cleanup" workers="1" config="cprefix=s3testqwer;containers=r(1,2,3);objects=r(1,200)" />
    </workstage>

    <workstage name="dispose">
      <work type="dispose" workers="1" config="cprefix=s3testqwer;containers=r(1,2,3)" />
    </workstage>

  </workflow>

</workload>

执行

bash cli.sh submit conf/s3-config-sample.xml

测试数据查看

  • Op-Type : 操作类型
  • Op-Count : 操作总数
  • Byte-Count : 操作产生的Byte
  • Avg-ResTime : 操作产生的平均时间
  • Avg-ProcTime : 操作的平均时间,这个是主要的延时参考,它反映了平均每次请求的时延
  • Throughput : 吞吐量,主要反映了操作的并发程度,也是重要的参考
  • Bandwidth : 带宽,反映了操作过程中的平均带宽情况
  • Succ-Ratio : 操作的成功率

标题:对象存储压力性能测试工具
作者:Carey
地址:HTTPS://zhangzhuo.ltd/articles/2021/09/13/1631524067685.html

生而为人

取消