创建JMeter场景并导入本地JMeter脚本,即可发起一次压测。本文为您介绍如何通过简单配置,快速发起一次Web页面压测。
前提条件
已开通PTS服务。
本示例使用
Apache JMeter 5.6.3
来创建脚本,PTS支持JMeter 5.0 和 5.6.3。
方案概览
若需使用JMeter压测功能,首先需要在本地使用Apache JMeter创建一个压测脚本。下面分两个步骤,为您演示如何创建JMeter脚本并上传到JMeter场景开启压测。
步骤一:使用Apache JMeter创建脚本
配置HTTP请求的属性,包括服务器名称或IP地址、端口号、HTTP方法等。
Basic页签配置项说明:
Protocol:示例选择
http
。Server name or IP:接口域名,例如
www.example.com
。Port Number:服务端口号,例如
80
。Method:选择
GET
。
运行测试计划,并在View Results Tree中查看结果,返回以下信息表示上传成功。
调试成功后,导出测试计划文件,此处命名为
HTTP_Request.jmx
。
步骤二:创建JMeter场景并启动压测
登录PTS控制台,选择 ,然后单击JMeter压测。
场景编排
重要配置项说明如下:
场景名:输入
test-jmx
。上传脚本文件:在场景装配页签下,添加JMeter脚本文件
HTTP_Request.jmx
。JMeter 版本:选择
5.6.3
。注意与创建脚本使用的Apache JMeter版本保持一致,否则可能会出错。施压配置
最大虚拟用户数配置为
10
,压测时长和递增时长配置2
分钟。其他配置保持默认即可。发起压测涉及费用问题,建议您合理选择施压量级,如需了解更多信息,请参见计费概述、压力模式与量级配置。场景调试
调试场景可验证配置是否合理,避免压测失败,建议您先调试场景。如下所示即为请求成功,如果响应状态不是
200
,请检查API是否可以正常访问。单击保存去压测,在温馨提示页面,选择立即执行并勾选确认本次压测已获得准许并遵守当地法律,然后单击启动压测。
分析压测结果
压测结束后,系统会自动获取压测数据,例如压测场景指标、业务详情数据、监控详情数据和API采样日志等,生成压测报告。您可在压测报告页面查看。更多信息,请参见查看JMeter压测报告。
常见问题
JMeter压测失败可能是因为PTS控制台的JMeter和本地JMeter版本不匹配、jar包插件没有上传完全、脚本中配置了本地路径的文件或JMeter压测的压力分配问题。相关解决方法如下所示:
虽然一般高版本JMeter能兼容低版本的,但不能保证有没有隐藏问题,尽量保证PTS控制台的JMeter和本地JMeter版本一致,本地调通后上云压测。并且不支持JMeter4.x。
本地调试用到的jar包插件和数据文件要随着脚本一起上传到JMeter场景中,不能遗漏。
脚本中用到文件时,本地调试时写的本地文件路径要统统删掉,只保留文件名,这是因为PTS施压机和本地文件系统不一样,不去掉会出错。
为了使压力达到控制台上设定的目标,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即可。如果有多个线程组且希望线程组的压力均等,则将每个线程组的线程数配置为相同的数字。如果希望每个线程组的压力成比例分配,就将每个线程组的线程数成比例配置。