全部产品
云市场

JMeter 模拟上传

更新时间:2019-11-20 15:01:22

若您需要对文件、图片的上传接口进行压测,可以使用 JMeter 编写脚本来模拟上传功能,然后通过 PTS 的 JMeter 原生压测方式发起压测。本文为您介绍如何使用 JMeter 客户端构造场景,并在 PTS 控制台完成压测。

前提条件

已在本地安装 JMeter 客户端。

步骤一:编写 JMeter 脚本

以下步骤将介绍如何编写 JMeter 脚本模拟上传功能。

  1. 启动 JMeter 客户端。

  2. 在 JMeter 客户端右键单击 Test Plan,选择 Add > Threads(Users) > Thread Group,为 JMeter 测试计划添加线程组,示例命名为“模拟上传”。

  3. 在 JMeter 客户端右键单击 Thread Group,选择 Add > Sampler > HTTP Request,在线程组中添加 HTTP 请求,示例命名为“上传”。

  4. 根据业务实际接口,填写 HTTP Request Basic 页签下的基本信息。示例如下:

    • Protocol:http
    • Server name or IP:www.example.com
    • Port Number:8080
    • Method:POST
    • Path:/fileupload
  5. 勾选 Use multipart/form-data

  6. Parameters 页签下,单击 Add 来添加请求 Body 中的参数信息。

    一般上传接口中无需填写,视具体请求来配置。配置项说明如下:

    配置项 说明 示例值
    Name 参数名 /
    Value 参数值 /
    URL Encode? 是否进行 encode 编码 选中后会进行 encode 编码,默认不选中。
    Content-Type 内容类型 text/plain。
    Include Equals 无 Value 值的参数是否需要等号(=) 选中之后 URL 会变为 http://www.example.org?login= ,此为规范的 URL 写法。
  7. 单击 Files Upload 页签,并单击 Add 添加参数信息。

    配置项 说明 示例值
    File Path 文件路径 填写文件名。注意:将该脚本上传至 PTS 发起压测时,需直接填写文件名,勿添加本地地址。
    Parameter Name 参数值 file
    MIME Type 内容类型 image/png

    配置完成后,如下图:

    file_upload配置

  8. 右键单击 HTTP Request Sampler “上传”,选择 Add >Config Element > HTTP Header Manager,添加 Header 信息。

    上传接口一般需要配置 Cookie 和 Content-Type。如果 Thread Group 中有登录操作,可不单独设置 Cookie。配置示例如下:

    上传header

  9. 右键单击 Thread Group “模拟上传”,选择 Add > Listener > View Results Tree,在线程组中查看结果树。

  10. 保存测试计划文件,进行脚本调试。

    根据 View Result Tree 查看该上传脚本的请求信息,示例如下:

    上传调试结果

步骤二:使用 JMeter 原生压测

调试成功后,需要在 PTS 控制台选择 JMeter 原生压测模式并上传该测试脚本及相关文件进行压测。详情请参见 JMeter 原生压测

upload script

步骤一:导入 JMeter 脚本

  1. 登录 PTS 控制台,在概览页单击 JMeter 原生压测,或者在左侧导航栏选择 创建压测 > JMeter 压测
  2. 发起 JMeter 压测页面,输入场景名称。
  3. 场景配置页签下,单击+上传文件,添加 JMeter 脚本、JAR 文件(即放置在 JMeter 的安装目录…/lib/ext 下的相关 JAR 文件)和其他数据文件。

    注意:上传的同名文件将覆盖之前上传的文件。如需对比文件,可在该文件的操作列,获取 MD5 值,与您本地文件的 MD5 值进行对比,确认文件是否变更。

    上传文件

    使用限制

    • JMX 脚本文件:文件大小不超过 2MB。可上传多个 JMX 脚本文件,但是压测仅能使用一个 JMX 脚本。发起压测前勾选一个使用。
    • JAR 文件:文件大小不超过 10MB。上传之前,请在本地 JMeter 环境调试 JAR 文件,确保调试通过。
    • CSV 和 ZIP 数据文件:文件大小不超过 60 MB。ZIP 内打包的文件必须是以 .csv 结尾的单个文件。

      注意

      • 准备 CSV 文件时,请不要直接修改 .xlsx 文件的后缀。推荐使用 EXCEL、Numbers 等软件导出,程序生成可以使用 Apache commons-csv。
      • 如果 JMX 脚本中关联了数据文件,务必将 CSV Data Set Config 中的 Filename 改为文件名本身,不要带路径(如下图所示)。否则会读取不到数据文件。同理,如果使用了 __CSVRe 函数或者在 JAR 中有指定文件,均需使用文件名。数据文件定义
  4. 如上传了多个 JMX 文件,勾选一个 JMX 文件作为发起该压测场景使用的 JMeter 脚本。
  5. (可选)为 CSV 文件勾选切分文件,可以保证该文件的数据在每个施压机不重复。不勾选该项,每个施压机上使用同一份数据。详见 JMeter 使用 CSV 参数文件
  6. 选择 JMeter 版本 和 Java 版本。
    • JMeter 版本:支持 Apache JMeter 5.0、4.0 和 3.3。
    • Java 版本:支持 Java 8。

步骤二:施压配置

单击施压配置页签,并完成施压配置。施压配置

配置项说明:

  • 压力来源:可选为国内和阿里云 VPC 内网。
    • 选择国内时,发起压测的节点来自全国各地,根据压测的量级来分配对应的节点资源(IP)。
    • 选择阿里云 VPC 内网时,您需要继续选择地域、VPC-ID、安全组、虚拟交换机等信息,压力来源来自您选择的阿里云 VPC 网络施压机。

      注意:

      • 选择地域后,VPC 信息栏下方会显示当前地域下施压源的可用区,确保选择的交换机与施压源在同一可用区内。若您的交换机不在当前地域的可用区内,请单击创建交换机去创建交换机。
      • 确保选择的交换机的空闲 IP 大于等于施压 IP 数。
  • 并发数:指同时发送压测请求的用户数量。并发数受您购买的资源包限制。
  • 指定 IP 数:指定施压引擎的数量,此项为可选项。引擎数增加会带来计费的增加,计费并发 = 引擎数 * 500,且最大引擎数不超过 100。
    • 增加引擎数会带来计费的增加,请关注施压配置页面右侧的预估消耗 VUM 数。
    • 可设置的最大引擎数受资源包限制,具体可参见指定IP数的帮助提示。
  • 压测时长:指压测总时长,包括预热时间。
  • 预热时间:指压测流量到达已配置的并发数的时间。在这个时间内,并发数递增,直到最大并发数。
  • 循环次数:指每个并发的循环执行次数。

    注意循环次数达到设置值,或压测时长达到设置值,压测都会停止。

步骤三(可选):添加监控

如果您有云监控或 ARMS 监控实例,通过添加监控的方式,您可以在压测及报告中便捷地查看相应的监控数据。具体操作及监控数据的查看步骤,参见以下文档:

步骤四:启动压测

完成基本配置之后,在发起 JMeter 压测页面右上角,单击保存去压测,发起压测。稍等数秒,操作页会进入压测态。页面概览如下。 保存去压测

压测过程中,您可以监控压测数据,进行如下操作:

  • 详情页签下,单击单个链路的右侧图标 91788_2,查看其 TPS、成功率、响应时间、流量等实时数据。
  • 选择 JMeter 日志页签,可根据施压机、日志级别、时间范围或施压线程筛选日志,并查看日志详情。
  • 单击页面右上角的查看采样日志,可根据压测 Sampler、响应状态、施压机等筛选日志,查看日志详情。

场景说明:

指标 说明
VUM PTS 的计费单位
压测计时 压测执行的时长,包括预热阶段的时间
场景并发 当前施压的并发值,如果在预热阶段则未达到配置并发,预热结束后即为配置的并发值
场景 TPS(s) 压测周期内,当前场景的平均 TPS 值。TPS = 场景压测期间的全部请求数 / 压测时长。
RT Avg (ms) 压测周期内,所有请求的平均响应时间 (区分成功与失败)
成功率(%) 所有请求的整体请求成功(无断言时 2XX、3XX 的比例;有断言时为断言成功的比例)情况

步骤五:查看压测报告

在压测停止之后,系统会自动收集压测过程中的数据,形成压测报告,展现 JMeter 压测场景和具体指令的压测动态信息。详情请参见JMeter 压测报告