使用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协议进行发送命令

[[email protected]_rbd_01]# cd 0.4.2.c3
[[email protected]_rbd_01 0.4.2.c3]# chmod +x *.sh
[[email protected]_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 :成功数

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

时间: 2024-10-12 20:41:16

使用COSBench工具对ceph s3接口进行压力测试的相关文章

关于url请求和json数据的响应的理解和接口的压力测试

原来,请求只是个地址,一般用GET获取,并没有发送json包过去, 是服务器返回json包回来,然后开发接收之后,把json包解析, ("请求了一个json包"这句话真的让我误会了好久), 实际上BS或者CS架构的东西,就是一个来回,request和response, 一般来说,接口(包含参数+地址等)就是一个request, 而正确的request之后,服务器会返回一堆数据包,这个过程叫response, 数据包一般都是json包,把json包解析加上前端各种标签的排列, 就可以看到

后端开发都应该了解点接口的压力测试(Apache Bench版)

背景 小A:小B,最近调你的接口老是超时呀,8秒都还没返回结果,是不是有性能问题呀! 小B :我看看~~ 类似这样的对话,在现实中是时有发生的,不是特别严重的话,往往大家也不会去重视这个事. 尤其是在一些测试资源并不完备的,开发人员对性能测试没有接触过的一些公司,遇到这些会显得更加力不从心. 本着对自己写出来的东西负责,上线之前,我们都应该对自己的接口进行一个简单的压力测试. 其实做这一步也是为了让我们心里有个度,有个底,不至于说连能承受多少量都不知道.如果什么都不知道,那很容易陷入一个无底深渊

开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试

Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Api. 详细介绍请看: http://doc.hitchhiker-api.com/cn/introduction.html 在线体验: http://www.hitchhiker-api.com/, 可以用 try without login 来免登录使用 (在线演示不支持压力测试和上传js,虚

【性能测试】针对部分接口进行压力测试

转自:https://www.cnblogs.com/haochuang/p/7753334.html JMeter中的部分配置如下: 参考:http://blog.csdn.net/zhujianing1993/article/details/51445912 Apache Jmeter发送post请求:http://blog.csdn.net/u010786672/article/details/25370447 Jmeter测试并发https请求:http://blog.csdn.net/

Jmter接口网站压力测试工具使用记录

1.首先下载Jmeter 官方地址:http://jmeter.apache.org/ 2.安装Jmeter 把下载的文件进行解压,产生如下目录: 打开bin文件夹下的jmeter.bat文件及进入程序的主界面窗体jmeter.log是日志文件. 主意:需要配置java环境. 3.jmter创建一个基本的测试 首先选中测试计划=>右键=>添加=>Threades(user)=>线程组,如图: 选中之后会出现线程的设置界面,设置名字,线程数,启动时间,循环此说等. 4.创建请求 创建

LoadRunner 如何进行接口的压力测试

主要压测的时候需要开发提供相关接口文档,或者自己录制.左侧的Name都是开发提供的接口参数名称,Value是相应的参数值.Action为开发给的测试地址.PS:注意在测试的时候设置Controller的Run time seting  Pacing的值为With a fixed delay of X seconds.还要注意在压测的时候观察服务器的CPU利用率已经内存使用情况. web_submit_data("insert",                "Action=

记一次接口压力测试与性能调优

〇.经验总结 1.如果总的CPU占用率偏高,且基本都被业务线程占用时,CPU占用率过高的原因跟JVM参数大小没有直接关系,而跟具体的业务逻辑有关.2.当设置JVM堆内存偏小时,GC频繁会导致业务线程停顿增多,TPS下降,最后CPU占用率也低了:3.当设置JVM堆内存偏大时,GC次数下降,TPS上升,CPU占用率立刻上升.4.Dom4J 这个xml解析工具性能很强大,但在处理节点和层级都较多的xml文本时,整体解析效率依然会成为业务处理瓶颈. 一.背景说明 最近新项目上线,需要对项目中的一个HTT

web服务器之压力测试工具

web服务器压力测试工具:ab 一.apache压力测试工具 ab是apache自带的一款测试工具,功能非常强大 语法格式: ab  [option] URL -c concurrency:一次性发起的请求个数,默认为1:-i:测试时使用HEAD方法,默认为GET:-k:启用HTTP长连接请求方式:-n requests:发起的模拟请求总个数:默认为1个:请求数要大于等于并发连接数:-q:静默模式,在请求数大于150个时不输出请求完成百分比: 输出结果:Time taken for tests:

学习总结——JMeter做http接口压力测试

JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做压力测试的时候就是混合场景,需要多个接口共同作用. 压测时间设定 通常时间设为10 – 15 分钟,如果涉及疲劳测试的话时间可根据实际情况设定,1周,一个月不等. 测试数据准备 如果需要测试的数据量很大的话,需要造数据,造数据可以JMeter操作数据库来完成,也可以用Python造数据. 结果查看