zoukankan      html  css  js  c++  java
  • 使用COSBench工具对ceph s3接口进行压力测试

    一、COSBench安装

    COSBench是Intel团队基于java开发,对云存储的测试工具,全称是Cloud object Storage Bench

    吐槽下,貌似这套工具是intel上海团队开发的,竟然没有中文的相关资料。

    同所有的性能测试工具一样,COSBench也分控制台和发起请求的driver,且driver可以分布式部署。可以支持swift、s3、Openstack等接口

    1、 下载COSBench工具

    下载地址为:https://github.com/intel-cloud/cosbench,一定要下载最新的包
    不然可能会运行失败,本人就遇到启动失败的问题

    2、 下载完成后,将包放至linux任意目录中,进行解压unzip xxx.zip

    3、 解压后,里面有说明文档:COSBenchUserGuide.pdf,不过是英文的

    4、 安装第三方装件,在centos下,需要安装java 和curl

    yum install java curl

    COSBench底层调用了linux nc来做数据分析,所以如果linux没装nc的需要手工安装nc

    5、 解压完成后,cd进入目录,如目录最新版本的示例0.4.2.c3,将sh文件赋予执行权限,这里使用http协议进行发送命令

    [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只能在一台上启动,后续会说添加多台driver

    启动成功后输入http://127.0.0.1:19088/controller/index.html就会出现页面,如果是在windows上查看,这里的ip需要换成linux的本机IP地址,并确定19088端口是放行的。

    如下图所示:

    在这里遇到一个问题,每次启动后时区都显示不对,且发起请求后,时间也会更改,原来是要修改启动脚本cosbench-start.sh

    修改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>

    五、查看结果

    下图为测试完成后的一个结果截图

    从图中我们可以看到与任务一个压力工具都是的指标

    1、Avg-ResTime  响应平均时间

    2、Avg-ProcTime 平均处理时间

    3、Throughput:吞吐量,也就是我们常说的TPS

    4、bandwith:带宽

    5、succ-ratio :成功数

    结果都是放在”archive”目录下了

    这里有一个遗憾点是,性能测试中的资源监控没办法加入,比如cpu内存之类的,只能自己写脚本收集数据。

  • 相关阅读:
    Leetcode 191.位1的个数 By Python
    反向传播的推导
    Leetcode 268.缺失数字 By Python
    Leetcode 326.3的幂 By Python
    Leetcode 28.实现strStr() By Python
    Leetcode 7.反转整数 By Python
    Leetcode 125.验证回文串 By Python
    Leetcode 1.两数之和 By Python
    Hdoj 1008.Elevator 题解
    TZOJ 车辆拥挤相互往里走
  • 原文地址:https://www.cnblogs.com/landhu/p/5843282.html
Copyright © 2011-2022 走看看