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内存之类的,只能自己写脚本收集数据。

  • 相关阅读:
    Notes | 基于医疗知识图谱的问答系统实践
    Notes | 知识图谱介绍与Neo4J实战
    从jvm源码看synchronized
    Kakfa基础
    volatile
    JVM垃圾收集器
    原码,反码,补码
    mini设计模式
    xshell提示采购解决方法
    应试必备算法
  • 原文地址:https://www.cnblogs.com/landhu/p/5843282.html
Copyright © 2011-2022 走看看