在日常开发中,开发人员或测试人员需要评估服务的性能是否符合预期,避免因功能迭代导致服务性能下降而引发故障。服务压测功能可以让您低成本地评估服务性能,做到1分钟创建压测场景,5分钟获取性能指标。

前提条件

在使用服务测试前,请确保您的应用已接入MSE治理中心。具体操作,请参见微服务治理中心入门概述

背景信息

在大促活动中,应该准备多少实例资源才能满足大促吞吐量的要求,降低因大促活动带来的访问量暴增进而引发系统宕机的风险。此时需要合理地评估服务性能,避免流量冲击引发的故障,并降低运营使用成本。

创建压测场景

  1. 登录MSE治理中心控制台
  2. 在左侧导航栏选择微服务治理中心 > 微服务测试 > 服务压测
  3. 在顶部菜单栏选择地域,然后单击创建场景
  4. 创建场景面板中设置场景配置压力配置数据配置等相关参数。创建压测场景SC
    1. 场景配置页签单击右侧的展开图标,设置如下相关参数。
      参数 描述
      场景名称 自定义压测场景名称,例如test-springcloud。
      步骤名称 自定义压测步骤名称。
      应用 选择需要压测的应用。
      框架类型 选择Spring Cloud框架,系统会自动识别应用类型。
      Path 选择HTTP相对路径,例如/getIp,或单击切换为自定义输入,手动输入HTTP相对路径。
      基本信息

      设置请求方法ContentType。其中请求方法包括GET/POST/PUT/DELETE,ContentType包括x-www-form-urlencoded和raw,不同的ContentType提供不同可视化的参数输入方式:

      • x-www-form-urlencoded:表单输入,传递的参数格式为[{"name": "cart"},{"age": 20}]。
      • raw:默认为application/json JSON格式输入,传递的参数格式为{"name": "cart", "age": 20}。其他格式输入,传递的参数格式按输入文本的传输。
      说明 GET和DELETE只支持修改URL的Path路径。POST和PUT支持ContentType及参数编写格式。

      关于Spring Cloud微服务支持的ContentType类型,请参见Spring Cloud参考示例

      请求头 设置请求头参数信息。
      断言(选填) 输入检查对象检查内容,选择检查条件
      出参提取(选填) 输入出参名出参提取表达式
      打印日志 开启可自动打印日志信息,但会影响到服务压测性能,建议正常压测时关闭。
    2. 压力配置页签设置如下相关参数。
      参数 描述
      压测模式 压测模式有两种:并发模式(虚拟用户模式)、TPS模式(Transaction Per Second,吞吐量模式)。
      • 并发模式:指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。
      • TPS模式:指系统每秒处理的事务数量。
      流量模型 流量模型包括固定压力、阶梯压力和脉冲压力。
      • 固定压力:以配置的固定并发值进行施压,并可设置预热时长。
      • 阶梯压力:设置最大值、最小值、预热时间等信息,在预热递增期间,从最小值开始按照阶梯逐步递增,达到最大并发后按照最大并发持续施压。不可指定循环次数。
      • 脉冲压力:设置峰值、谷值以及持续时间等信息,施压流量以峰值、峰谷的锯齿波的形式进行施压。
      压测时长(分钟) 指压测总时长,公测期间最大压测时长60分钟。
      预热时长(分钟) 施压前的预热时间,若设置为0,则表示无需预热。
    3. 数据配置页签单击添加CSV数据,在CSV数据设置对话框中设置如下相关参数,然后单击确定
      参数 描述
      名称 自定义参数名称。
      注释 自定义参数说明。
      变量名称 输入CSV文件中的各个参数名称,多个变量名称之间使用英文逗号(,)进行分隔。
      CSV文件 单击上传文件,选择本地CSV格式的参数文件进行上传。
      说明
      • MSE会把CSV参数文件分发到每一个施压机,应用调用会按参数文件中的顺序自动读取参数,您只需在CSV文件中设置参数顺序即可。
      • 参数文件仅支持.csv格式,且文件首行表示参数名称,实际压测请求调用时,默认自动忽略首行。
  5. 场景配置基本信息配置区域,通过${XXX }格式引用定义的参数变量名称,然后单击确定
    说明 XXX为数据配置中添加的变量名称,需要用${ }格式进行引用,例如:${param}

创建多步骤串联的压测场景

说明 一个压测场景可以包含多个压测步骤,当后续的压测步骤依赖先前的压测步骤的输出时,需要使用参数传递。
  1. 登录MSE治理中心控制台
  2. 在左侧导航栏选择微服务治理中心 > 微服务测试 > 服务压测
  3. 在顶部菜单栏选择地域,单击目标用例右侧操作列的详情
  4. 场景详情面板中单击编辑场景,然后在编辑场景面板中选择场景配置页签,执行以下操作:
    1. 单击目标压测步骤右侧的访问一次,弹出单步骤调试结果
      您可查看此次请求接口信息请求入参请求出参
    2. 单步骤调试结果面板中单击出参提取助手,弹出出参提取助手窗口,选择需要提取的出参参数进行复制,然后单击确定
      弹出提示内容:${XXX}参数已写入剪切板,请直接粘贴。
    3. 出参提取(选填)下方的出参提取表达式中粘贴所选择的出参表达式,并自定义出参名
    4. 单击添加下一步骤添加多个压测步骤。
    5. 在该压测步骤的基本信息区域引用变量值,格式为${XXX}
      说明 XXX为前序步骤的出参提取中自定义的出参名,需要用${ }格式进行引用。
  5. 编辑场景面板中选择压力配置页签,配置压力数据,然后单击确定
    多步骤串联的压测场景配置完成。

执行结果

压测场景创建成功后,您可查看服务压测列表查看相关信息,包括平均TPS平均响应时间错误率等。

您还可以执行以下相关操作管理压测场景:

  • 查看压测详情:在服务压测列表页面,单击操作列的详情,在压测场景详情页面执行启动停止编辑场景等操作。
  • 复制压测场景:在服务压测列表页面,单击操作列的复制,可生成一个新的压测场景。
  • 删除压测场景:在服务压测列表页面,单击操作列的删除,可删除该压测场景。

查看压测报告

  1. 登录MSE治理中心控制台
  2. 在左侧导航栏选择微服务治理中心 > 微服务测试 > 服务压测
  3. 在顶部菜单栏选择地域,单击目标用例右侧操作列的详情
  4. 在服务压测列表中单击操作列的详情,查看场景配置运行记录
  5. 运行记录区域单击操作列的详情,查看实时性能数据。
    查看压测报告
    说明 性能数据是每10秒的所有施压机数据统计,具体根据压测总时间长度会有所变化。单击图上方的图例,可以显示或隐藏某些数据曲线。
    参数 说明
    总请求数 整个压测过程中,共发起的请求个数。
    平均TPS 压测周期内,所有压力机发出的平均TPS值,TPS=调用总次数/总运行时间。
    平均RT(ms) 所有压力机发出平均响应时间。
    最小RT(ms) 所有压力机中最小的一次响应时间。
    最大RT(ms) 所有压力机中最大的一次响应时间。
    错误请求数 所有压力机中错误请求数之和。
    错误率 所有压力机中的平均错误率。
    TP80(ms) 所有压力机中80分位(P80)的平均值。
    TP95(ms) 所有压力机中95分位(P95)的平均值。
    TP99(ms) 所有压力机中99分位(P99)的平均值。
  6. 单击下载日志,可获取压测过程中的日志。

Spring Cloud参考示例

ContentType 参数编写格式
x-www-form-urlencoded 在表单中以key-value对的方式填入,传递的参数格式:[{"name": "cart"},{"age": 20}]。
raw
  • JSON(application/json):JSON字符串,如:{"name": "cart", "age": 20}。
  • XML(application/xml):Application/XML类型的XML字符串。
  • XML(text/html):TEXT/XML类型的XML字符串。
  • HTML(text/html):HTML字符串。
  • JavaScript(application/javascript):JavaScript字符串。
  • Text(text/plain) :纯文本格式的编码形式(TEXT/XML/HTML)。

微服务测试用户交流群

如果您在微服务引擎MSE使用微服务测试过程中有任何疑问,欢迎您使用钉钉扫描下方的二维码或搜索钉钉群号31180380加入钉钉群进行反馈。

微服务测试交流群