使用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..c3
[root@test_rbd_01 0.4..c3]# chmod +x *.sh
[root@test_rbd_01 0.4..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内存之类的,只能自己写脚本收集数据。
使用COSBench工具对ceph s3接口进行压力测试的更多相关文章
- 使用COSBench工具对ceph s3接口进行压力测试--续
之前写的使用COSBench工具对ceph s3接口进行压力测试是入门,在实际使用是,配置内容各不一样,下面列出 压力脚本是xml格式的,套用UserGuide文档说明,如下 有很多模板的例子,在co ...
- 单机Web后端接口服务压力测试
单机Web后端接口服务压力测试 工具:Apache jmeter 环境:Window 10 语言:Kotlin + java 架构:SpringBoot + + Mysql + redis + Spr ...
- python学习笔记(threading接口性能压力测试)
又是新的一周 延续上周的进度 关于多进程的学习 今天实践下 初步设计的接口性能压力测试代码如下: #!/usr/bin/env python # -*- coding: utf_8 -*- impor ...
- 使用 WRK 压力测试工具对 ASP.NET Core 的接口进行压力测试
0. 简要介绍 WRK 是一款轻量且易用的 HTTP 压力测试工具,通过该工具我们可以方便地对我们所开发的 WebAPI 项目进行压力测试,并且针对测试的情况返回结果. PS:Wrk 并不能针对测试的 ...
- JMeter工具接口性能压力测试分析与优化
最近公司做的项目,要求对相关接口做性能压力测试,在这里记录一下分析解决过程. 压力测试过程中,如果因为资源使用瓶颈等问题引发最直接性能问题是业务交易响应时间偏大,TPS逐渐降低等.而问题定位分析通常情 ...
- 开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试
Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试 ...
- 工具使用-----Jmeter教程 简单的压力测试
摘抄于http://www.cnblogs.com/TankXiao/p/4059378.html 以下是英文版的,中文版的也差不多的 Jmeter是一个非常好用的压力测试工具. Jmeter用来做 ...
- 结合docker做flask+kafka数据接口与压力测试
一.需求 需要做实时数据接入的接口.数据最终要写入库,要做到高并发,数据的完整,不丢失数据. 二.技术选型 1.因为只是做简单的接口,不需要复杂功能,所以决定用flask这个简单的python框架(因 ...
- Jmter接口网站压力测试工具使用记录
1.首先下载Jmeter 官方地址:http://jmeter.apache.org/ 2.安装Jmeter 把下载的文件进行解压,产生如下目录: 打开bin文件夹下的jmeter.bat文件及进入程 ...
随机推荐
- 续:纠正:ubuntu 【6.04 LTS】可以安装安装 ! for《Oracle-10.2.0.1,打补丁10.2.0.5:在 debian 版本4【不含4】以上,及 ubuntu 7.04【不含7.04】以上都可以安装!》
经过长时间的试错.探索,终于查明无法顺利安装oracle10g的原因,并且找到顺利安装的方式. 要点: 无法安装的根本原因有2: 1:libc6-dev的版本为2.23-0ubuntu10,其中的cr ...
- 妙味远程课堂-JS属性
html由属性名和属性值组成 属性读操作:获取.找到 元素.innerHtml//读取元素内的html内容 元素.属性名 案例1:点击按钮弹出文本框的内容(value值) <!DOCTYPE h ...
- Get started with ros -- 1
原创博文:转载请标明出处(周学伟):http://www.cnblogs.com/zxouxuewei/tag/ 一.Introduction: 机器人操作系统(ROS)是使机器人系统的不同部分能够发 ...
- 5 -- Hibernate的基本用法 --3 Hibernate的体系结构
⊙ SessionFactory : 这是Hibernate的关键对象,它是单个数据库映射关系经过编译后的内存镜像,也是线程安全的.它是生成Session的工厂,本身需要依赖于ConnectionPr ...
- com.alibaba.fastjson.JSONObject
package com.alibaba.fastjson; import java.util.Date; import java.util.List; import com.alibaba.fastj ...
- js节流函数高级版
节流函数其主要作用就是防止用户在短时间内多次触发该事件. <!DOCTYPE html> <html lang="en"> <head> < ...
- Splash Lua 脚本
Splash 可以通过 Lua 脚本执行一系列渲染操作,这样我们就可以用 Splash 来模拟浏览器的操作了,Splash Lua 基础语法如下: function main(splash, args ...
- Python的Flask框架与数据库连接的教程
命令行方式运行Python脚本 在这个章节中,我们将写一些简单的数据库管理脚本.在此之前让我们来复习一下如何通过命令行方式执行Python脚本. 如果Linux 或者OS X的操作系统,需要有执行脚 ...
- Ubuntu输入法切换问题
不知道改了个什么东西,Ubuntu 15.04 中Ctrl+Space不能切换输入法了,因此不能输入英文,shell就更是没法工作,在设置里面找了好久,“文本输入”/“语言支持”/“键盘”里面都没找到 ...
- 对C#中几个循环语句的使用,请教
今天是在云和数据学院学习的第四天,由于各种原因···今天自己预习的循环语句的用法以及写了几个程序,也遇到各种的问题了···纠结.由于还是在学习的很初初初级,所以好多简单的方法还是不知道怎么写出来,只得 ...