5. 堪比JMeter的.Net压测工具 - Crank 实战篇 - 接口以及场景压测

1. 前言

通过之前的学习,我们已经掌握了crank的配置以及对应http基准工具bombardier、wrk、wrk2的用法,本篇文章介绍一下如何将其用于实战,在实际的项目中我们如何使用crank来完成压测任务。

2. 项目背景

目前有一个项目,我们希望通过压测来了解其QPS、吞吐量、以及临界值,并通过压测来分析出其瓶颈在哪里?并通过解决瓶颈问题以提高QPS、吞吐量等指标

先看下我们手头掌握了什么:

  • 项目信息
    • 项目中的接口基本都需要登录
    • 通过与开发沟通可以得到每个页面的接口信息以及参数信息
  • 环境信息
    • 压测项目有单独的环境部署应用、Redis、数据库等基础配置

此处项目名我们暂定为ProjectA。

3. 如何开展

首先我们先回顾一下Agent、Controller的职责以及特点

  • Controller
    • 做任务调度以及结果输出
    • 无需单独服务器,可以在本机执行发送命令,需要与Agent相通
  • Agent
    • 任务的实际执行者
    • 单任务执行,不能做到接收到多个任务并同时执行,先收到哪个任务,哪个任务会先执行
    • 相同一个任务可以被多个Agent同时执行,最终指标结果会自动累加,可以通过提升Agent来模拟更高的并发能力

3.1. 思路

  • 先做好单独接口的压测,大概掌握每个接口的指标情况
  • 同时压测多个接口,完成对场景的压测
  • 通过压测观察应用服务器、基础服务器的CPU、带宽、内存等指标,观察Redis、数据库、消息队列等基础组件情况,根据压测的返回结果得到每个场景的基础指标
  • 通过分析发现瓶颈、然后再考虑如何突破瓶颈,提升QPS、吞吐量等

3.2. 如何做?

了解到单个Agent同时执行多个任务会进行排队,无法做到多任务同时执行,那么我们可以通过多个Agent同时执行不同的任务来模拟用户访问页面。

3.2.1. 构建Agent

之前与开发沟通得到每个页面最多可发送的请求是6个,那么我们准备6个Agent,分别为Agent1、Agent2、Agent3、Agent4、Agent5、Agent6

我们这里使用Docker来启动Agent、Agent对内开放端口: 5010、对外端口随机,镜像使用我们自建的: doddgu/crankagent:net5.0

并新建load.yml为之后压测使用:

profiles:
  crankAgent1:
    jobs:
      load:
        endpoints:
          - http://localhost:5010
  crankAgent2:
    jobs:
      load:
        endpoints:
          - http://localhost:5011
  crankAgent3:
    jobs:
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值