JMeter压测快速入门

创建JMeter场景并导入本地JMeter脚本,即可发起一次压测。本文为您介绍如何通过简单配置,快速发起一次Web页面压测。

前提条件

  • 开通PTS服务

  • 本示例使用Apache JMeter 5.6.3来创建脚本,PTS支持JMeter 5.0 和 5.6.3。

方案概览

若需使用JMeter压测功能,首先需要在本地使用Apache JMeter创建一个压测脚本。下面分两个步骤,为您演示如何创建JMeter脚本并上传到JMeter场景开启压测。

步骤一:使用Apache JMeter创建脚本

  1. 配置HTTP请求的属性,包括服务器名称或IP地址、端口号、HTTP方法等。image

    Basic页签配置项说明:

    • Protocol:示例选择http

    • Server name or IP:接口域名,例如www.example.com

    • Port Number:服务端口号,例如80

    • Method:选择GET

  2. 运行测试计划,并在View Results Tree中查看结果,返回以下信息表示上传成功。image

  3. 调试成功后,导出测试计划文件,此处命名为HTTP_Request.jmx

步骤二:创建JMeter场景并启动压测

  1. 登录PTS控制台,选择性能测试 > 创建场景,然后单击JMeter压测

  2. 场景编排image

    重要配置项说明如下:

    场景名:输入test-jmx

    上传脚本文件:在场景装配页签下,添加JMeter脚本文件HTTP_Request.jmx

    JMeter 版本:选择5.6.3。注意与创建脚本使用的Apache JMeter版本保持一致,否则可能会出错。

  3. 施压配置

    最大虚拟用户数配置为10,压测时长和递增时长配置2分钟。其他配置保持默认即可。发起压测涉及费用问题,建议您合理选择施压量级,如需了解更多信息,请参见计费概述压力模式与量级配置image

  4. 场景调试

    调试场景可验证配置是否合理,避免压测失败,建议您先调试场景。如下所示即为请求成功,如果响应状态不是200,请检查API是否可以正常访问。image

  5. 单击保存去压测,在温馨提示页面,选择立即执行并勾选确认本次压测已获得准许并遵守当地法律,然后单击启动压测

分析压测结果

压测结束后,系统会自动获取压测数据,例如压测场景指标、业务详情数据、监控详情数据和API采样日志等,生成压测报告。您可在压测报告页面查看。更多信息,请参见查看JMeter压测报告image

常见问题

JMeter压测失败可能是因为PTS控制台的JMeter和本地JMeter版本不匹配、jar包插件没有上传完全、脚本中配置了本地路径的文件或JMeter压测的压力分配问题。相关解决方法如下所示:

  1. 虽然一般高版本JMeter能兼容低版本的,但不能保证有没有隐藏问题,尽量保证PTS控制台的JMeter和本地JMeter版本一致,本地调通后上云压测。并且不支持JMeter4.x。

  2. 本地调试用到的jar包插件和数据文件要随着脚本一起上传到JMeter场景中,不能遗漏。

  3. 脚本中用到文件时,本地调试时写的本地文件路径要统统删掉,只保留文件名,这是因为PTS施压机和本地文件系统不一样,不去掉会出错。

  4. 为了使压力达到控制台上设定的目标,PTS会在压测时对脚本进行改写(不会覆盖原来的脚本)。改写方法为:

    PTS控制台上配置的并发数,除去setUp Thread Group和tearDown Thread Group中的线程数(我们不会改写这两种线程组的配置, 只会改写普通的Thread Group),剩下的线程数(如果小于0则为0)会在普通线程组中进行分配。此时假如脚本中配置了三个普通线程组,线程数比例为a:b:c。场景中配置500并发,并且没有setup thread group和tear down thread group,那么500并发将会按照a:b:c的比例分配到这些线程组上。 基于以上信息,请在压测前明确脚本中的线程组类型。如果您的脚本中只有一个线程组,脚本中的线程组配置的线程数写1即可。如果有多个线程组且希望线程组的压力均等,则将每个线程组的线程数配置为相同的数字。如果希望每个线程组的压力成比例分配,就将每个线程组的线程数成比例配置。

相关文档