微服务压测功能可以用于压测构建于VPC内的微服务应用,通过PTS界面的配置,可以快速实现微服务压测。本文介绍如何对SpringCloud微服务进行压测。

背景信息

经典微服务架构是通过网关暴露每一个服务,且通过网络隔离来保障每个服务的安全性,因此云上微服务通常构建于安全性较高的VPC网络内。但压测VPC内的微服务应用会面临着网络隔离的难题,传统的解决方案是基于VPC网络搭建压测工具进行压测,例如JMeter压测工具。但搭建JMeter需要一定的时间成本和代码基础,且对微服务压测的支持不友好。

PTS自研的微服务压测功能可以解决这些难题,通过PTS控制台的简单配置,快速实现微服务的压测。

操作步骤

  1. 登录PTS控制台,在左侧导航栏中选择压测中心 > 创建场景
  2. 创建场景页面,单击SpringCloud压测
  3. 创建微服务场景页面,填写场景名
  4. 选择微服务类型SpringCloud
  5. 选择注册中心类型,然后填写相关参数。
    参数 描述 示例
    注册中心类型 包括Eureka、直连和Nacos类型。 直连
    服务中心 若是直连类型,需要填写服务地址。格式为http://[ip]:[port],多个地址之间用半角逗号(,)间隔。 http://192.168.0.0:8080
    注册中心 微服务注册中心的IP地址。格式为http://[ip]:[port][ip]:[port]
    注意 对于微服务引擎MSE用户,注册中心地址填写方式取决于是否配置命名空间。
    • 若未配置命名空间,即选择默认命名空间DEFAULT_GROUP时,此处填写对应的注册中心地址,如XXX.nacos-ans.mse.aliyuncs.com:8848
    • 若已配置命名空间,则注册中心地址的格式为注册中心地址加上命名空间的ID。例如,若命名空间ID为abc,则此处应填写XXX.nacos-ans.mse.aliyuncs.com:8848?namespaceId=abc
    http://172.16.0.0:8080
  6. 场景配置页签下,填写SpringCloud配置信息。
    参数类别 参数 描述 示例
    基本配置 应用名 暴露服务的应用application,SpringBoot应用一般为spring.application.name demo-pts-service-provider
    访问路径 请求路径URL。 /demo
    请求方式 包括GET、POST、PUT、DELETE,并需要在Header定义页签定义Header。若选择POST和PUT请求,还需要填写请求参数Body。 GET
    超时时间 请求发送之后该虚拟用户等待应答的最长时间,单位为毫秒。默认值1000,即1秒。对于在线业务,建议超时时间小于5000毫秒。主要行业的响应时间建议如下:
    • 互联网企业:500毫秒以下,例如淘宝业务10毫秒左右。
    • 金融企业:1000毫秒以下,部分复杂业务3000毫秒以下。
    • 保险企业:3000毫秒以下。
    • 制造业:5000毫秒以下。
    1000
    Header定义 Key 定义Header的Key信息。若需指定Cookie填入Header中,Key填写为Cookie,Value需要填写完整的Cookie信息,例如session=12345。 Authorization
    Value 定义Header的Value信息。若需指定Cookie填入Header中,Key填写为Cookie,Value需要填写完整的Cookie信息,例如session=12345。 testca
    Body定义
    说明 若选择POST和PUT请求方式,还需要填写请求参数Body。
    x-www-form-urlencoded 定义Body的内容取决于请求参数类型(Content-Type)。

    x-www-form-urlencoded即数据被编码为名称、值对。

    说明 选择x-www-form-urlencoded类型时,如果定义的Body已编码(例如“%25”即为“%”编码后的值),那么压测前需要先对Body解码,以避免PTS对已编码的请求再次编码引起错误。单击编辑框右上角的对Body进行decode并选择解码格式按UTF-8或者按GBK完成解码操作。
    • Key:name
    • Value:test
    raw raw类型支持以下格式:
    • Text(text/plain):纯文本格式的编码形式(TEXT/XML/HTML)。
    • JSON(application/json):JSON字符串。
    • JavaScript(application/javascript):JavaScript字符串。
    • XML(application/xml):Application/XML类型的XML字符串。
    • XML(text/xml):TEXT/XML类型的XML字符串。
    • HTML(text/html):HTML字符串。
    选择JSON(application/json):
    {"code":200,"data":{"items":[{"id":"123","name":"yaozhuang"},{"id":"456","name":"fuzhuang"}]},"requestId":"Cf2HJKEf-197B-JK47-79E9-FA82BH64KA40","successResponse":false}
    自定义 选中自定义后,出现一个文本框,可输入content-type,暂不支持multipart、video、image这三个开头的类型。 customized-content-type
    出参设置 出参名 只能包含英文字母、数字和下划线(_)。 class
    来源 标记Response的解析方式,可选择以下类型:
    • Body:JSON:以JSON格式解析Response Body。
    • Body:TEXT:以TEXT格式解析Response Body。
    • Header:K/V:以键值对格式解析Response Header。
    • Cookie:K/V:以键值对格式解析Cookie。
    • 响应状态码:提取Response中的状态码。
    Body:TEXT
    解析表达式 从Response截取需要的内容,对应到当前变量。 class
    第几个匹配项 仅用于来源Body:TEXT时。若上一步定义的解析表达式在Response中有多个匹配时,指定第几个字符串作为出参。从0开始,-n表示倒数第n个,取值区间为[-99,99]。如果想要取随机匹配项,请填写random 1
    检查点设置 检查点类型 配置检查点可以从业务维度判断请求是否成功。多个检查点之间是“与”的关系。 出参
    检查对象 选择检查的对象。 class
    检查条件 包括包含不包含等于等检查条件。 包含
    检查内容

    输入期望检查的内容。

    JSON
    说明

    若需要设置其他文件参数,可单击页面下方的数据源管理。具体操作,请参见使用文件参数

  7. 单击施压配置页签,设置微服务所在的网络配置,例如区域、VPC、安全组和交换机。
    参数 描述
    压力来源 本次压测使用的网络类型。
    VPC信息 选择VPC压测后,需补充的目标服务所在的VPC信息。
    注意 对于微服务引擎MSE用户,若使用阿里云VPC内网进行压测,在填写VPC信息时,需填写目标服务网络环境所在的VPC,即ECS所在的VPC、安全组和交换机。
    并发数 指同时发送压测请求的用户数量。
    指定IP数 指定施压引擎的数量。引擎数增加会带来计费的增加,计费并发=引擎数×500。
    说明
    • 增加引擎数会带来计费的增加,请关注施压配置页签右侧压力预估图的预估消耗VUM数。
    • 可设置的最大引擎数受资源包限制,具体信息,以控制台的指定IP数为准。
    • 为合理利用资源,增加后的引擎数不超过100且不超过配置的并发数。
    • 如当前无法满足,请提交工单申请扩容。
    压测时长 建议压测时长不低于2分钟,总时长默认不可超过24小时,如有特殊需求,请提交工单
    流量模型 压测的流量模型包含以下三种:
    • 均匀递增:从0开始均匀递增,达到最大并发后按照最大并发持续施压,不可指定循环次数。
    • 阶梯压力:从0开始按照递增阶梯逐步递增,达到最大并发后按照最大并发并持续施压。不可指定循环次数。
    • 固定压力:以配置的固定并发值进行施压。
  8. 可选:创建场景页面下方,单击调试场景
    可对配置的场景进行调试,验证配置是否正确。更多信息,请参见JMeter、微服务场景调试界面说明
  9. 单击保存去压测,在对话框中单击确定

后续步骤

查看压测报告,具体操作,请参见查看微服务压测报告