tencent cloud

文档反馈

COS 压测指南

最后更新时间:2024-11-18 14:11:53

    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
    3. 编辑 s3-config-sample.xml 文件并添加任务配置信息,任务配置主要包含如下五个阶段:
    init 阶段:创建存储桶。
    prepare 阶段:worker 线程,PUT 上传指定大小的对象,用于 main 阶段读取。
    main 阶段:worker 线程混合读写对象,运行指定时长。
    cleanup 阶段,删除生成的对象。
    dispose 阶段:删除存储桶。
    示例配置如下:
    <?xml version="1.0" encoding="UTF-8" ?>
    <workload name="s3-50M-sample" description="sample benchmark for s3">
    
    <storage type="s3" config="accesskey=************************************;secretkey=************************************;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
    压测线程数
    4. 编辑 cosbench-start.sh 文件,在 Java 启动行添加如下参数,关闭 s3 的 md5 校验功能:
    -Dcom.amazonaws.services.s3.disableGetObjectMD5Validation=true
    
    
    
    5. 启动 cosbench 服务。
    对于 centos 系统,执行以下命令:
    sudo bash start-all.sh
    对于 ubuntu 系统,执行以下命令:
    sudo bash start-driver.sh &sudo bash start-controller.sh &
    6. 执行以下命令提交任务。
    sudo bash cli.sh submit conf/s3-config-sample.xml
    并通过该网址 http://ip:19088/controller/index.html(IP 替换为用户的压测机器 IP)查看执行状态:
    
    
    此时可以看到五个执行阶段,如下图所示:
    
    
    
    7. 下面展示的是所属地域为北京地域、32核、内网带宽为17Gbps 的 CVM 进行上传和下载性能测试,包括以下2个阶段:
    prepare 阶段:100个 worker 线程,上传1000个50MB 对象。
    main 阶段:100个 worker 线程混合读写对象,运行300秒。
    经过以上阶段1和阶段2的性能压测,结果如下:
    
    
    
    8. 执行以下命令,停止测试服务。
    sudo bash stop-all.sh
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持