Apache JMeter是Apache旗下的开源测试工具,成立于1999年初,至今已有20多年的历史。JMeter是主流开源压力测量工具之一,功能丰富,社区庞大。
性能测试通常集中在新系统上线或大规模活动之前,以验证系统能力,帮助排除和定位性能瓶颈。
压力测量活动可以大致分为几个步骤:
1.场景配置。配置压力测试场景以模拟用户和系统之间的交互。
2.进行压力测量。根据指定的压力水平开始压力测量。
3.压力监测和分析。压力测试通常侧重于压力RPS、成功率、服务响应时间、网络带宽等关键指标。
4.报告摘要。披露系统能力是否满足要求,记录系统性能的演变和优化过程。
接下来,我们讨论如何使用JMeter完成上述步骤,以及相关的最佳实践建议。
用Java开发JMeter,需要先安装JDK并配置PATH环境变量,然后从官网下载JMeter二进制压缩包并解压。建议在PATH环境变量中添加jmeter bin目录,这样在命令行输入jmeter命令就可以启动JMeter。
JMeter的场景配置
简单的HTTP请求配置
最常见的压力测试场景是HTTP压力测试。测试场景在JMeter脚本中称为测试计划。当JMeter打开时,默认情况下它将是空测试计划。JMeter使用并发来控制压力,一个线程可以看作是执行请求的虚拟用户。右键单击测试计划并添加线程组。
线程组默认为1个线程,只执行一次,方便测试和执行脚本。保持这个默认值就可以了。
在JMeter中发送请求的组件称为采样器。通过右键单击线程组添加一个HTTP请求节点。
HTTP请求最关键的配置是URL。JMeter允许URL协议类型、服务器名称、请求路径等。单独配置。您也可以将整个网址直接填写到路径中,并将其他字段保留为空。
这样就配置了最简单的HTTP压力测试脚本。
为了方便地测试和调试脚本,可以在测试计划下添加一个查看结果树侦听器。该侦听器仅用于在编辑脚本时测试和调试脚本,以及查看请求执行的详细信息,无需任何配置。
测试执行脚本
第一次执行脚本之前,需要保存脚本,比如保存为test.jmx每次执行脚本之前,JMeter都会默认自动保存脚本。
当连续执行脚本几次时,JMeter默认情况下不会清理历史记录。为避免历史执行结果的干扰,单击“全部清除”按钮,手动清除空历史记录,然后单击“开始”按钮执行脚本,执行结果更加刷新,便于故障排除。
根据默认的线程组配置,脚本完成一次。单击查看结果树,查看请求执行的详细信息,包括请求头、请求体、响应头和完整的响应体。
场景布置
真实的试压场景通常不是只有一个请求,而是多个请求按照一定顺序和规则的组合,即场景布局。场景编排是JMeter等压力测试引擎最重要的功能之一,也是与Apache ab等简单压力测试工具的重要区别之一。
这里我们假设一个最简单的场景,首先访问JMeter主页,停留1秒钟,然后跳转到下载页面。
当脚本访问网站的不同页面时,它可以添加一个HTTP请求默认值节点来配置默认协议类型和服务器名称。这样可以避免重复配置。当需要修改协议类型或域名时,只能修改HTTP请求默认值。
“HTTP请求默认值”配置服务器的名称是jmeter.apache.org,鼠标可以拖动“HTTP请求默认值”节点移动到“HTTP请求”节点之前。
每个请求节点都可以设置一个有业务含义的名称,方便理解和管理。访问JMeter主页的HTTP请求可以重命名为home,路径改为/。添加另一个HTTP请求节点,将其命名为下载页面,并将路径设置为/download_jmeter.cgi..
模拟在主页上暂停1秒钟。右键单击主节点,添加一个常量计时器子节点,并将延迟时间设置为1000毫秒。
再次执行脚本,点击查看结果树,查看两个HTTP请求节点的执行细节。
注意:
定时器节点作为场景布置的辅助节点,不请求执行动作或显示细节。
循环执行脚本时,最后一个节点下载页面执行完毕后,会立即跳转到脚本的开头,执行第一个节点home。您还可以在下载页面上添加一个计时器,以模拟在继续后续请求之前停留一秒钟。
JMeter的压力测试执行
在编辑和调试脚本时,我们通常将它们设置为1个线程,并且只执行一次。进行压力测试时,通常需要在更高的压力下持续进行一段时间。
脚本固定配置压力
如果计划在50并发执行2分钟,脚本线程组的配置可以修改如下。
配置描述:
1.并发数设置为50。
2.检查要始终执行的周期数。
3.检查调度程序,并将执行时间设置为120秒。
通常我们在JMeter图形界面中编辑脚本,但是压力测试时GUI占用的额外资源可能会影响压力性能,压力机可能没有图形界面环境。因此,脚本编辑完成后,JMeter压力测试通常以命令行模式执行。
进入JMeter脚本目录,执行JMeter压力测试的命令是jmeter -n -t。
如果执行上述test.jmx脚本,命令如下:jmeter -n -t test.jmx
输出结果如下:创建摘要
使用test.jmx成功创建了树
2019年6月25日星期二14:38:32开始测试
在端口4445上等待可能的关闭/停止测试现在/堆泵消息
00:00:27中的摘要+553 = 20.3/s平均值:1378最小值:252最大值:8587错误:0活动:50开始:50完成:0
1.《压测 阿里巴巴在开源压测工具 JMeter 上的实践和优化》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《压测 阿里巴巴在开源压测工具 JMeter 上的实践和优化》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guoji/1534521.html