Apache JMeter是Apache项目下的开源压测工具,有丰富的功能,支持参数化、断言等。PTS支持JMeter原生引擎的压测,并在此基础上,为您提供便捷的横向扩展的能力,同时结合云监控集成能功能持续补强JMeter在高并发和监控定位方面的能力和体验。

限制条件

  • 最大并发用户数不能超过资源包的并发规格,请参见产品价格
  • 该功能和PTS原生功能共享并发用户数的额度。例如,您持有一个278(最大并发用户数5000)的资源包,PTS原生压测场景中使用了1000并发,那么同时进行的JMeter集成功能的压测只能使用4000最大并发来启动。
  • 由于共享施压资源,如果碰到压测引擎不足的报错,请稍后重试。

步骤一:导入JMeter脚本

  1. 登录PTS控制台,在概览页单击JMeter原生压测,或者在左侧导航栏选择创建压测 > JMeter压测
  2. 发起JMeter压测页面,输入场景名。
  3. 场景配置页签下,单击上传文件,添加JMeter脚本、JAR文件(即放置在JMeter的安装目录.../lib/ext 下的相关JAR文件)和其他数据文件。
    注意 上传的同名文件将覆盖之前上传的文件。如需对比文件,可在该文件的操作列,获取MD5值,与您本地文件的MD5值进行对比,确认文件是否变更。
    JMeter压测

    使用限制

    • 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中有指定文件,均需使用文件名。
      JMeter Data File
  4. 如上传了多个JMX文件,勾选一个JMX文件作为发起该压测场景使用的JMeter脚本。
  5. 可选:为CSV文件勾选切分文件,可以保证该文件的数据在每个施压机不重复。不勾选该项,每个施压机上使用同一份数据。详情请参见JMeter 使用 CSV 参数文件
  6. 选择是否使用依赖环境。详情请参见使用环境
    • 若选择是,则需要选择环境管理中已创建好的环境。
    • 若选择否,则需要选择JMeter版本。目前支持Apache JMeter 5.0、4.0、3.3和Java 8。
  7. (可选)如果您上传的脚本中有分布式适配组件,例如定时器(Timer)、控制器(Controller)等,可以对其进行多施压IP的分布式适配设置,有利于更精准、有效地进行性能测试。
    1. 设置同步定时器。若您上传的JMeter脚本中自带定时器(Timer),需要选择脚本中的设置值是全局生效单机生效
      • 全局生效:脚本中设置值为集群整体阈值,会根据使用到的IP数来拆分到单机集合阈值上(即单施压机阈值为脚本中值/IP数)。假设共使用到2个施压IP,脚本配置集合阈值为1000,单机阈值即为500。
      • 单机生效:脚本中设置值为单台施压机的阈值,不会替换脚本内容,此时需要注意并发量与配置值是否匹配。假设共使用到2个施压IP,脚本配置集合阈值为1000,单机阈值即为1000,施压集群整体为2000。
      timer
    2. 设置常数吞吐量定时器。若您上传的JMeter脚本中自带控制器(Controller),需要选择脚本中的设置值是全局生效单机生效。详情请参见常数吞吐量分布式使用示例
      • 全局生效:脚本中设置值为集群整体阈值,会根据使用到的IP数来拆分到单机吞吐量目标值上(即单施压机阈值为脚本中值/IP数),假设使用到2台施压IP,并发为100,脚本上仅1个线程组,其吞吐量目标为每分钟100,计算模式为当前线程,此时场景的总目标吞吐量为2×(100并发/2 )×(100/2)= 5000(每分钟)。
      • 单机生效:脚本中设置值为单台施压机的目标值,不会替换脚本内容,需要注意并发量级与配置值是否匹配。假设使用到2台施压IP,并发为100,脚本上仅1个线程组,其吞吐量目标为每分钟100,计算模式为当前线程,此时场景的总目标吞吐量为2×(100并发/2 )×100=10000(每分钟)
      controller

步骤二:施压配置

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

施压配置
参数项 说明
压力来源 可选择国内公网或阿里云VPC内网。
  • 选择国内时,发起压测的节点来自全国各地,根据压测的量级来分配对应的节点资源(IP)。
  • 选择阿里云VPC内网时,您需要继续选择地域、VPC-ID、安全组、虚拟交换机等信息,压力来源来自您选择的阿里云VPC网络施压机。
注意
  • 选择地域后,VPC信息栏下方会显示当前地域下施压源的可用区,确保选择的交换机与施压源在同一可用区内。若您的交换机不在当前地域的可用区内,请单击创建交换机去创建交换机。
  • 确保选择的交换机的空闲IP大于等于施压IP数。
并发数 指同时发送压测请求的用户数量。并发数受您购买的资源包限制。
指定IP数 指定施压引擎的数量,此项为可选项。引擎数增加会带来计费的增加,计费并发=引擎数 * 500。
注意
  • 增加引擎数会带来计费的增加,请关注施压配置页面右侧压力预估图的预估消耗VUM数。
  • 可设置的最大引擎数受资源包限制,详情可参见指定IP数的帮助提示。
  • 为合理利用资源,增加后的引擎数不超过100且不超过配置的并发数。
压测时长 指压测总时长,包括预热时间。
说明 为了更好地测试系统性能,建议您的压测时长不低于2分钟。压测启动后,随时可以手动停止。为便于资源合理利用,总时长默认不可超过24小时,有特殊需求请提交工单
流量模型 流量模型包括固定压力值均匀递增阶梯递增
  • 固定压力值:以配置的固定并发值进行施压,施压过程中可手动调速,并可指定并发循环次数。固定压力值
  • 均匀递增:预热递增期间,从0开始均匀递增,达到最大并发后按照最大并发持续施压,不可指定循环次数。均匀递增
  • 阶梯递增:预测递增期间,从0开始按照阶梯逐步递增,达到最大并发后按照最大并发并持续施压。不可指定循环次数。阶梯递增
递增时长 即预热时间,指压测流量未到达已配置的并发数的时间。在这个时间内,并发数递增,直到最大并发数。只有在均匀递增阶梯递增的流量模型下需要设置递增时长。
递增阶梯数 完成递增时间段的阶梯数。阶梯数范围为3~100,最后一个阶梯是100%的量级。例如当阶梯为5的时候,第一个阶梯是20%的量级,第5个阶梯是100%的量级。只有阶梯递增的流量模型下需要设置递增阶梯数。
是否循环 若选择,则需配置循环次数,同时预热时间的配置失效。
循环次数 指每个并发的循环执行次数。循环次数达到设置值,或压测时长达到设置值,压测都会停止。
流量定制 在压力来源是公网的情况下,PTS性能测试的压测流量是分布式的,从全国大小城市和运营商随机调度。通过流量定制功能,您可以指定压测流量发起的地域或运营商,并配置其占比。步骤如下:
  1. 选中流量定制
  2. 单击详细配置
  3. 在地域定制对话框中,配置以下项:
    • 维度选择:目前支持根据地区或运营商指定压力来源。其他功能将陆续开放。
    • 资源定制:可添加多条分配规则,指定具体的地域或运营商及其IP数占比。单击 +添加地区,然后选择地域或运营商,并输入其IP数。
    • 启动策略:选中定制资源不足时,优先启动压测后,会优先匹配指定的资源定制需求,指定资源不足时会随机分配资源以满足压测需求。

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

如果您有云监控或ARMS监控实例,通过添加监控的方式,您可以在压测及报告中便捷地查看相应的监控数据。

具体操作及监控数据的查看步骤,请参见以下文档:

步骤四:启动压测

  1. 完成基本配置之后,单击保存去压测。在温馨提示对话框中选择执行周期
    • 选择立即执行。稍等数秒,操作页会进入压测状态。
    • 选择定时压测。以定时任务的方式启动压测,请参见定时压测
  2. 可选:压测过程中,您可以监控压测数据,进行场景调速等操作。
    压测中

    压测信息

    • 场景详情页签下,支持场景调速功能,在场景调速中输入需要并发的数字或百分比,可在压测过程中进行场景并发的调整。单击单个链路的右侧查看图表,查看其TPS、成功率、响应时间、流量等实时数据。
    • 选择JMeter日志页签,可根据施压机、日志级别、时间范围或施压线程筛选日志,并查看日志详情。
    • 选择施压机性能页签,显示了压测过程中所有施压机的CPU使用率、Load5、内存利用率的时序曲线等信息。您还可以筛选查看特定施压机的性能信息。
    • 若您添加了ECS监控、SLB监控、RDS监控和ARMS监控等,可以选择监控详情页签,查看相关监控信息,详情请参见查看监控详情
    • 单击页面右上角的查看采样日志,可根据压测Sampler、响应状态、施压机等筛选日志,查看日志详情。

数据信息

数据信息 说明
VUM 本次压测消耗的资源总数,单位是VUM (每虚拟用户每分钟),请参见常见问题
场景并发 施压的并发值。若在压测过程中设置了场景调速,会分别显示当前并发值和配置最大并发值。如果在预热阶段则未达到配置并发,预热结束后即为配置的并发值。
场景TPS(s) 所有Agent统计周期内的总请求数除以时间所得。
总请求数 整个场景在压测过程中发出去的总请求数。
成功RT Avg(ms) 所有成功请求的平均RT。
失败RT Avg(ms) 所有失败请求的平均RT。
成功率 所有Agent统计周期内全场景请求成功率。
说明 监控数据的来源基于Backend Listener进行了简单的聚合计算。施压Agent的统计采样周期是15秒,数据汇总计算的周期也是15秒,故可能会有数据延迟的情况。

配置信息

配置信息页罗列了场景配置中的基本信息,例如压力来源、并发数等。若配置了流量定制,可将鼠标悬浮在压力来源中的查看分布,可查看定制的流量来源。单击指定ip数查看分布,可查看发起压测流量的IP地址所在的地理位置和所属运营商。

流量定制

采样日志详情

单击报告页面右上角的查看采样日志,可筛选并查看日志详情。

  1. 根据压测Sampler、响应状态等筛选日志。在对应的日志操作栏,点击查看详情
  2. 日志详情对话框中,在General 页签下查看日志字段和字段值。在对话框右上角切换显示格式:通用HTTP协议样式。
    采样日志
  3. Timing页签下查看耗时信息。
    瀑布流
  4. 如果JMeter脚本中配置了从HTML文件嵌入资源Embedded Resources from HTML Files),日志详情中会出现子请求详情页签。

    通过选择特定的子请求,可筛选出对应的请求日志。

    子请求详情

    Timing页签下也将显示总请求耗时和每一个子请求的耗时情况。

步骤五:查看压测报告

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

  1. 在PTS控制台左侧菜单栏,单击压测报告,进入压测报告列表页。
  2. 在对应的报告一行的操作栏,单击查看报告。详情请参见JMeter 压测报告
    说明 趋势图中,每个点数据的统计采样周期是15秒,最终数据报告上可能初期会有数据延迟的情况。压测报告数据保留30天,如有需要可导出报告本地保存。
    JMeter压测报告

步骤六(可选):导出压测报告

如您需要,可以将当前压测报告导出至本地。

  1. 测试报告页,单击右上角的报告导出,选择是否包含阿里云PTS水印版本。
  2. 进入网页版报告页面,单击下载报告,可将压测报告(PDF)下载至本地。

参考文档