首页 > 其他分享 >cosbench压测指南

cosbench压测指南

时间:2023-11-14 15:24:10浏览次数:41  
标签:指南 cosbench 压测 sudo sh 线程 阶段 COSBench

COS 压测指南

COSBench 简介

COSBench 是一款由 Intel 开源,用于对象存储的压测工具。腾讯云对象存储(Cloud Object Storage,COS)作为兼容 S3 协议的对象存储系统,可使用该工具进行读写性能压测。

系统环境

工具推荐运行在 CentOS 7.0 及其以上版本,ubuntu 环境可能存在预期外的问题。

影响性能的因素

机器核心数:机器核心数较少,开启的 worker 数目较多,容易在上下文切换上产生大量的开销,建议采用32或64核进行压测。

机器网卡:机器流出的流量受网卡限制,大文件的流量压力测试,建议采用万兆以上的网卡。

请求网络链路:外网链路质量不一,同时外网下载会产生外网下行流量费用,建议同地域使用内网访问。

测试时间:性能测试时,建议测试时间适当延长,获取一个较为稳定的数值。

测试环境:程序运行的 JDK 版本,同样也会影响性能。例如测试 HTTPS,低版本客户端的加密算法存在 GCM BUG,随机数发生器可能存在锁等问题。

COSBench 实践步骤

  1. 从 COSBench GitHub 网站 下载 COSBench 0.4.2.c4.zip 压缩包,并在服务器上进行解压。
  2. 安装 COSBench 的依赖库,执行如下命令。

对于 centos 系统,执行如下命令安装依赖:

sudo yum install nmap-ncat java curl java-1.8.0-openjdk-devel -y

对于 ubuntu 系统,执行如下命令安装依赖

sudo apt install nmap openjdk-8-jdk 
  1. 编辑 s3-config-sample.xml 文件并添加任务配置信息,任务配置主要包含如下五个阶段:

3.1 init 阶段:创建存储桶。

3.2 prepare 阶段:worker 线程,PUT 上传指定大小的对象,用于 main 阶段读取。

3.3 main 阶段:worker 线程混合读写对象,运行指定时长。

3.4 cleanup 阶段,删除生成的对象。

3.5 dispose 阶段:删除存储桶。

示例配置如下:

<?xml version="1.0" encoding="UTF-8" ?>
<workload name="s3-50M-sample" description="sample benchmark for s3">


  <storage type="s3" config="accesskey=AKIDHZRLB9Ibhdp7Y7gyQq6BOk1997xxxxxx;secretkey=YaWIuQmCSZ5ZMniUM6hiaLxHnxxxxxx;endpoint=http://cos.ap-beijing.myqcloud.com" />


  <workflow>


    <workstage name="init">
      <work type="init" workers="10" config="cprefix=examplebucket;csuffix=-1250000000;containers=r(1,10)" />
    </workstage>


    <workstage name="prepare">
      <work type="prepare" workers="100" config="cprefix=examplebucket;csuffix=-1250000000;containers=r(1,10);objects=r(1,1000);sizes=c(50)MB" />
    </workstage>


    <workstage name="main">
      <work name="main" workers="100" runtime="300">
        <operation type="read" ratio="50" config="cprefix=examplebucket;csuffix=-1250000000;containers=u(1,10);objects=u(1,1000)" />
        <operation type="write" ratio="50" config="cprefix=examplebucket;csuffix=-1250000000;containers=u(1,10);objects=u(1000,2000);sizes=c(50)MB" />
      </work>
    </workstage>


    <workstage name="cleanup">
      <work type="cleanup" workers="10" config="cprefix=examplebucket;csuffix=-1250000000;containers=r(1,10);objects=r(1,2000)" />
    </workstage>


    <workstage name="dispose">
      <work type="dispose" workers="10" config="cprefix=examplebucket;csuffix=-1250000000;containers=r(1,10)" />
    </workstage>


  </workflow>


</workload>

参数说明

参数 描述
accesskey、secretkey 密钥信息,建议使用子账号密钥,授权遵循 最小权限指引,降低使用风险。子账号密钥获取可参考 子账号访问密钥管理
cprefix 存储桶名称前缀,例如 examplebucket
containers 为存储桶名称数值区间,最后的存储桶名称由 cprefix 和 containers 组成,例如:examplebucket1,examplebucket2
csuffix 用户的 APPID,需注意 APPID 前面带上符号 -,例如 -1250000000
runtime 压测运行时间
ratio 读和写的比例
workers 压测线程数
  1. 编辑 cosbench-start.sh 文件,在 Java 启动行添加如下参数,关闭 s3 的 md5 校验功能:
-Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true

img

  1. 启动 cosbench 服务。

对于 centos 系统,执行以下命令:

sudo bash start-all.sh

对于 ubuntu 系统,执行以下命令:

sudo bash start-driver.sh 
&sudo bash start-controller.sh &

  1. 执行以下命令提交任务。
sudo bash cli.sh submit conf/s3-config-sample.xml

并通过该网址 http://ip:19088/controller/index.html(ip 替换为用户的压测机器 IP)查看执行状态:

img

此时可以看到五个执行阶段,如下图所示:

img

  1. 下面展示的是所属地域为北京地域、32核、内网带宽为17Gbps 的 CVM 进行上传和下载性能测试,包括以下2个阶段:

7.1 prepare 阶段:100个 worker 线程,上传1000个50MB 对象。

7.2 main 阶段:100个 worker 线程混合读写对象,运行300秒。

经过以上阶段1和阶段2的性能压测,结果如下:

img

  1. 执行以下命令,停止测试服务。
sudo bash stop-all.sh

标签:指南,cosbench,压测,sudo,sh,线程,阶段,COSBench
From: https://www.cnblogs.com/mio1221/p/17831666.html

相关文章

  • Java开发者的Python快速进修指南:函数基础
    话不多说,今天我们要介绍的是函数。本系列文章追求短而精,今天我们将重点讨论函数以及与Java方法的区别。与Java方法不同,函数不需要像Java方法一样讲究修饰符等其他特性,它只需要使用"def"关键字进行声明。另外,函数的参数也与Java方法有所不同,Java方法中不存在默认参数的概念,而在Pyth......
  • Redis各种集群搭建指南
    Redis集群本章是基于CentOS7下的Redis集群教程,包括:单机安装RedisRedis主从Redis分片集群1.单机安装Redis首先需要安装Redis所需要的依赖:yuminstall-ygcctcl例如,我放到了/tmp目录:解压缩:tar-xzfredis-6.2.4.tar.gz解压后:进入redis目录:cdredis-6.2.4运行编译命令:make&&makei......
  • [左神面试指南] 递归和动态规划[上]篇
    CD183斐波那契数列问题的递归和动态规划1/**矩阵快速幂*[f(n),f(n-1)]=[1,1]x[[1,1],[1,0]]^(n-2)*/publicclassCD183_1{publicstaticlongsolution(longn){if(n<1)return-1;if(n<=2)return1;long[][]......
  • 从混乱到优雅:基于DDD的六边形架构的代码翻新指南
    前言趁着双十一备战封板,终于又有一些时间可以梳理一下最近的心得。最近这半年跟同事讨论比较多的是分层架构,然后就会遇到两个触及灵魂的问题,一个是如何做好分层架构,二是DDD在架构层面该如何落地。为了说好分层,我们需要了解架构的意义。良好的架构是为了保证一下两点:治理应用......
  • Linux多路径IO流量负载和单链路负载压测
     LinuxMultipath的IO流量多链路负载和单链路负载压测 再linux下,对于udev和multipath均能做到自定义并持久化设备名,其中udev还能做到更改设备权限。而multipath也能做到持久化设备名,但无法更改设备权限,但是multipath能够实现更多的功能,比如IO流量负载功能。 测试情况1......
  • rustbook-ch1-入门指南-总结
    rustbook-ch1-入门指南-总结一、rust版本管理1、安装rust之前需要安装一个C语言编译器。正常编译、执行rust程序,需要一个链接器。由于C语言编译器通常都会附带链接器,所以需要安装一个C语言编译器。除了编译执行需要链接器外,一部分常用的Rust包会依赖使用C语言编写的代码,为了编......
  • FinClip 应用指南:如何应用小程序插件?
    插件,是可被添加到小程序内直接使用的功能组件。开发者可以像开发小程序一样开发一个插件,供其他小程序使用。同时,小程序开发者可直接在小程序内使用插件,无需重复开发,为用户提供更丰富的服务。小程序开发者可便捷地把插件添加到自己的小程序内,丰富小程序的服务。当用户在使用小程......
  • 阿里云崩了,我们更愿意读“事件说明”还是“避坑指南”?
    做软件的人:“工作体验好,好事才能来。”双十一后第一天,阿里云崩了从下图能看出,这次虽然只崩了3个多小时,但受影响的产品多,地域广。如图1。图1这次崩了受影响的产品多,地域广应该说,阿里云的健康状态页设计得还是很不错的。我很快就能找到这次崩了的持续时长,以及所影响的产品和......
  • 从混乱到优雅:基于DDD的六边形架构的代码翻新指南 | 京东物流技术团队
    前言趁着双十一备战封板,终于又有一些时间可以梳理一下最近的心得。最近这半年跟同事讨论比较多的是分层架构,然后就会遇到两个触及灵魂的问题,一个是如何做好分层架构,二是DDD在架构层面该如何落地。为了说好分层,我们需要了解架构的意义。良好的架构是为了保证一下两点:治理应用复杂度,......
  • rustbook-ch1-入门指南-总结
    rustbook-ch1-入门指南-总结1、安装rust之前需要安装一个C语言编译器。正常编译、执行rust程序,需要一个链接器。由于C语言编译器通常都会附带链接器,所以需要安装一个C语言编译器。除了编译执行需要链接器外,一部分常用的Rust包会依赖使用C语言编写的代码,为了编译这些Rust代码,也需......