JMeter 中两大高级线程组的区别与应用

一、JMeter 中的高级线程组概述

最近群里的测试小伙伴在问在 JMeter 中,“jp@gc - Ultimate Thread Group”和“jp@gc - Stepping Thread Group 阶梯加压”有哪些区别和实际应用场景有哪些?所以这里也跟大家分享一下

在这里插入图片描述

JMeter 作为一款强大的性能测试工具,拥有众多实用的插件,其中 jp@gc - Ultimate Thread Groupjp@gc - Stepping Thread Group 这两个高级线程组在性能测试中发挥着至关重要的作用。

jp@gc - Ultimate Thread Group 功能强大且灵活度高,相当于把多个不同基础线程组进行组合。它可以用于创建线性负载、阶梯负载、尖峰负载和波浪形负载等多种测试场景。例如,在创建线性负载测试场景中,可在 60s 内启动 100 个线程,持续运行 60s,再花 10s 的时间结束脚本。同时,添加监听器 jp@gc - Active Threads Over Time 后,能方便地查看线程运行情况。在创建阶梯负载测试场景时,比如测试 100 个用户,可以逐步提升用户数量,先从 25 个用户开始,在一定时间内保持该负载,观察服务器的处理情况,然后再依次增加用户数量,通过这种方式能更可靠地了解系统在不同负载下的运行状态。

jp@gc - Stepping Thread Group 则主要用于模拟从某个值开始不断增加压力,直至达到某个值,然后持续运行一段时间的测试场景。例如,设置总共要启动的线程数为 100,从运行之后 0 秒开始启动线程,初次启动 0 个线程,之后每次启动 10 个线程,每运行 30 秒启动一次,启动线程时间为 5 秒,全部启动完之后持续运行 60 秒,最后每 1 秒钟释放 5 个线程。结合监听器 jp@gc - Active Threads Over Time,可以清晰地观察线程运行情况,还能设置比较陡峭的并发。

二、jp@gc - Stepping Thread Group 的特点与应用

(一)独特的参数设置

  • This group will start:表示总共要启动的线程数,它确定了整个测试过程中的最大线程数量,比如设置为 100 个,表示最终会加载 100 个线程,用于模拟特定场景下的最大并发用户数。
  • First,wait for:这是第一阶段等待时间,如果设置为 0,就不需要等待,它可以用于控制测试的起始时间点,以便更好地模拟实际场景中的用户行为。
  • Then start:初始加载的线程数,比如设置为 20 个,表示初始启动 20 个线程,为后续的逐步加压提供了起始点。
  • Next add:每梯次加载的线程数,比如设置为 5 个,表示每个梯次加载 5 个线程,结合后面的参数可以控制线程增加的速度和节奏。
  • threads every:当前运行多长时间后再次加载线程或每一次加载完成之后的持续时间,比如设置为 1 秒,每梯次加载完线程之后运行 1 秒,这个参数可以调整测试的动态性。
  • using ramp-up:每梯次加载线程的时间,比如设置为 0 秒,表示每一次加载立刻完成,它与前面的参数共同决定了线程增加的速度。
  • Then hold load for:线程全部加载完之后运行多长时间,比如设置为 30 秒,表示 100 个线程加载完之后再持续 30 秒,用于模拟系统在高负载下的持续运行情况。
  • Finally,stop/threads every:每多长时间释放多少个线程,比如设置为 5 个和 1 秒,表示所有持续负载结束之后每 1 秒钟释放 5 个线程,用于控制测试的结束过程。

(二)应用场景广泛

  • 容量测试:在容量测试中,jp@gc - Stepping Thread Group 可以评估系统在用户逐渐增加情况下的性能极限。通过逐步增加线程数,观察系统的响应时间、吞吐量等指标的变化,确定系统能够承受的最大负载。例如,在模拟网站上线初期访问量逐渐增长的过程中,可以使用该插件来测试系统的容量,以便及时发现潜在的性能问题并进行优化。
  • 稳定性测试:验证系统在用户访问量逐步增长过程中的稳定性和响应时间。通过长时间运行测试,观察系统在不同负载下的稳定性,确保系统在持续高负载下不会出现崩溃或性能严重下降的情况。例如,在电商平台大促活动前,可以使用该插件进行稳定性测试,以保证系统在高流量下的稳定运行。
  • 发布前压力测试:模拟新服务或产品发布后,用户逐渐发现并访问的场景,以评估系统的准备情况。通过设置合理的参数,模拟真实用户的增长趋势,提前发现系统可能存在的性能瓶颈,为发布做好充分准备。

(三)使用注意事项

确保配置的用户增长速度和系统处理能力相匹配,避免因过快增加负载导致测试环境崩溃。在设置参数时,需要充分了解系统的性能特点和处理能力,根据实际情况合理调整线程增加的速度和数量。

监控资源使用情况,结合监听器结果分析性能瓶颈。在测试过程中,要密切关注系统的资源使用情况,如 CPU、内存、网络带宽等,结合监听器收集到的响应时间、吞吐量等数据,分析系统的性能瓶颈所在,以便进行针对性的优化。

根据实际需求调整参数,合理设置测试持续时间和用户行为模式,以获得最接近真实的测试结果。不同的应用场景可能需要不同的参数设置,要根据具体情况进行调整,确保测试结果能够真实反映系统在实际使用中的性能表现。

三、jp@gc - Ultimate Thread Group 的特点与应用

(一)丰富的控制参数

  • Start Time:该阶段开始的时间点,相对于测试启动的时间(单位:秒)。它决定了线程组开始执行的时间,可以精确控制测试的启动时机,以便更好地模拟实际场景中的用户行为。例如,如果设置为 10 秒,表示在测试启动后的第 10 秒开始执行该线程组。
  • Initial Delay, sec:线程开始增加前的延迟时间。这个参数可以用于模拟用户在进入系统前的等待时间,或者在某些特定场景下,为了避免瞬间高并发而设置的延迟。比如设置为 5 秒,那么在 Start Time 之后,会再等待 5 秒才开始增加线程。
  • Startup Time, sec:线程从零增加到目标数量所需的时间。它控制了线程数量的增长速度,可以模拟用户逐渐进入系统的过程。例如,如果要在 30 秒内启动 100 个线程,那么 Startup Time 可以设置为 30 秒。
  • Hold Load For, sec:达到目标线程数后保持该负载的时间。这个参数用于模拟用户在系统中的持续活动时间,以便测试系统在高负载下的稳定性。例如,设置为 60 秒,表示在达到目标线程数后,保持该负载状态 60 秒。
  • Shutdown Time:线程从当前数量减少到零所需的时间。它可以控制测试的结束过程,避免突然停止测试对系统造成的冲击。比如设置为 10 秒,表示在测试结束时,用 10 秒的时间逐渐减少线程数量至零。

(二)多样的应用场景

  • 创建线性负载:例如在 60s 内启动 100 个线程,持续运行 60s,花 10s 的时间结束脚本。这种场景可以模拟用户数量逐渐增加,然后在一定时间内保持稳定,最后逐渐减少的过程,适用于测试系统在稳定负载下的性能表现。
  • 创建阶梯负载:先从 25 个用户开始在一定时间内保持一个负载,查看服务器如何处理它。之后再依次增加 25 个用户,直到达到 100 个用户。这种方式可以更细致地观察系统在不同负载阶段的性能变化,找出系统的性能瓶颈。
  • 创建尖峰负载:可以模拟突然出现的高并发情况,如促销活动、突发事件等场景下用户的瞬间涌入。通过设置合适的参数,可以快速启动大量线程,然后在短时间内达到峰值,再逐渐减少线程数量,测试系统在应对突发高负载时的性能。
  • 创建波浪形负载:以 12306 抢票为例,每次开放抢票时,有大量用户涌入,等到下次开放时,又有大量用户涌入,像波浪一样不断敲击服务器。通过设置合适的 Initial Delay、Startup Time、Hold Load For 和 Shutdown Time 参数,可以模拟这种波浪形的负载模式,考验服务器的性能。

(三)优势与不足

  • 优势:提供了丰富的控制选项,能够满足复杂测试需求。可以根据不同的测试场景精确调整线程的行为,模拟出各种真实世界中的用户行为模式。例如,在模拟用户登录高峰期、持续使用期以及用户活动的逐渐减少等场景时,能够更加贴近实际情况,获得更准确的性能评估结果。
  • 不足:配置较为复杂,需要了解更多线程组控制参数的概念和作用。对于初学者来说,可能需要花费一定的时间来学习和理解这些参数的含义和用法。而且在设置参数时,需要充分考虑系统的性能特点和测试需求,否则可能会导致测试结果不准确或者测试过程出现问题。

四、两者区别与实际应用对比

(一)参数设置方面的区别

  • 启动方式
    • jp@gc - Stepping Thread Group 从一个初始值开始,通过逐步增加线程数的方式启动。例如设置总共要启动的线程数为 100,从运行之后 0 秒开始启动线程,初次启动 0 个线程,之后每次启动一定数量的线程,逐步达到最大值。
    • jp@gc - Ultimate Thread Group 可以设置初始延迟时间,然后在特定的启动时间内将线程从零增加到目标数量。比如设置初始延迟为 5 秒,在 Start Time 之后,会再等待 5 秒才开始增加线程,然后在规定的 Startup Time 内启动到目标线程数。
  • 运行过程控制
    • jp@gc - Stepping Thread Group 通过设置每梯次加载的线程数、加载时间和持续时间等参数来控制运行过程。例如每梯次加载 5 个线程,每运行一段时间再次加载,加载时间为特定值,加载完成后持续运行一段时间。
    • jp@gc - Ultimate Thread Group 则通过 Startup Time、Hold Load For 等参数来控制线程从启动到达到峰值以及在峰值持续运行的时间。例如在 30 秒内启动到目标线程数,然后保持该负载状态一定时间。
  • 结束方式
    • jp@gc - Stepping Thread Group 通常是每多长时间释放一定数量的线程,逐步减少线程数直到为零。比如每 1 秒钟释放 5 个线程。
    • jp@gc - Ultimate Thread Group 可以设置一个线程从当前数量减少到零所需的时间,逐渐结束测试。比如设置为 10 秒,表示在测试结束时,用 10 秒的时间逐渐减少线程数量至零。

(二)应用场景的不同

  • 容量测试
    • jp@gc - Stepping Thread Group 在容量测试中适合逐步增加负载,观察系统在不同负载阶段的性能变化,找出系统的容量极限。例如在模拟电商平台用户访问量逐渐增长的过程中,可以更好地了解系统在各个阶段的处理能力。
    • jp@gc - Ultimate Thread Group 则可以通过创建不同的负载模式,如线性负载、阶梯负载等,全面测试系统在不同负载情况下的性能表现。比如在测试一个新上线的应用时,可以通过创建线性负载来模拟用户数量的逐渐增加,观察系统的响应时间和吞吐量的变化。
  • 稳定性测试
    • jp@gc - Stepping Thread Group 可以通过设置较为平缓的线程增加速度,长时间运行测试,观察系统在不同负载下的稳定性。例如在进行银行系统的稳定性测试时,可以逐步增加用户数量,观察系统在处理大量交易时的稳定性。
    • jp@gc - Ultimate Thread Group 可以通过设置尖峰负载或波浪形负载来测试系统在突发高负载和间歇性高负载情况下的稳定性。比如在测试在线游戏服务器时,可以模拟玩家数量的突然增加和波动,观察服务器的性能表现。
  • 发布前压力测试
    • jp@gc - Stepping Thread Group 可以根据实际情况逐步增加负载,模拟新服务或产品发布后用户逐渐发现并访问的场景,提前发现系统可能存在的性能问题。例如在发布一个新的移动应用时,可以通过设置逐步增加的线程数来模拟用户的增长趋势,确保系统在发布后能够稳定运行。
    • jp@gc - Ultimate Thread Group 可以通过创建多种负载模式,全面测试系统在不同用户行为模式下的性能表现,为发布做好充分准备。比如在发布一个新的电商平台时,可以通过创建阶梯负载和波浪形负载来模拟用户在促销活动和日常使用中的行为,确保系统能够应对各种情况。

总之,jp@gc - Stepping Thread Groupjp@gc - Ultimate Thread Group 在参数设置和应用场景上各有特点,性能测试人员可以根据实际需求选择合适的线程组进行测试,以获得更准确的性能评估结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/452687.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java项目-基于Springboot的应急救援物资管理系统项目(源码+说明).zip

作者:计算机学长阿伟 开发技术:SpringBoot、SSM、Vue、MySQL、ElementUI等,“文末源码”。 开发运行环境 开发语言:Java数据库:MySQL技术:SpringBoot、Vue、Mybaits Plus、ELementUI工具:IDEA/…

基于SpringBoot网上超市的设计与实现(论文+源码)_kaic

摘 要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此超市商品销售信…

100 种下划线 / 覆盖层动画 | 终极 CSS(层叠样式表)集合

还在为你的菜单项和链接寻找动画效果而感到疲惫吗? 不用再找了!这里列出了 100 多种不同的动画。从简单的到更复杂的,你肯定能找到自己想要的。 无需 SVG(可缩放矢量图形),无需 JavaScript(脚…

小白也能剪出优秀视频:四大视频剪辑工具推荐!

无论是社交媒体上的短视频分享,还是专业制作的长视频内容,视频剪辑工具都扮演着至关重要的角色。今天,就让我们来探讨几款市面上流行的视频剪辑工具。 福昕视频剪辑 直达链接:www.pdf365.cn/foxit-clip/ 操作教程:立…

使用Diffutoon把视频转换成动漫风格,无需部署,开箱即用

无论是图片动漫转换以及视频动漫转换,我们前期也介绍过相关的模型,但是其模型输出的动漫视频不是有瑕疵,就是动漫效果不唯美,今天介绍一个modelscope社区开源的动漫风格转换模型Diffutoon。 Diffutoon模型接受视频作为输入&#x…

【C语言】循环中断break

在循环使用过程中,可能遇到某些情况需要终止循环。比如按座位查找一位学生,循环查找,找到时可以直接停止。后续的循环将不再执行。 break;只跳出一层循环 例子中的素数判断,查找到根号n停止:一个合数等于两个数的乘积…

新手必须掌握的Linux命令

1.1 常用系统工作命令 echo [linuxprobelocalhost /]$ echo $SHELL /bin/bash 使用$变量的方式提取SHELL的值,并输出到到屏幕上 date [linuxprobelocalhost /]$ date -s "20170901 8:30:00" 将系统时间设置为 reboot ----系统重启命令poweroff --…

JavaWeb Servlet--09深入:注册系统05---动态搜索栏

动态搜索栏 分析:在显示用户信息的表单里有一个下拉框选择用户的信息,一个文本框进行输入,一个按钮就行搜索,在下拉框选择了性别或许姓名的某一个包含字就会返回所有满足的用户。在controller层进行接收选择的搜索条件&#xff0…

Starrocks部署前期准备

前提条件 硬件要求 CPU StarRocks 依靠 AVX2 指令集充分发挥其矢量化能力。因此,在生产环境中,强烈建议您将 StarRocks 部署于 x86 架构 CPU 的服务器上。 您可以在终端中运行以下命令来检查 CPU 是否支持 AVX2 指令集: cat /proc/cpuin…

【深度学习】RNN的简单实现

目录 1.RNNCell 2.RNN 3.RNN_Embedding 1.RNNCell import torchinput_size 4 hidden_size 4 batch_size 1idx2char [e, h, l, o] x_data [1, 0, 2, 2, 3] # 输入:hello y_data [3, 1, 2, 3, 2] # 期待:ohlol# 独热向量 one_hot_lookup [[1, …

如何使用Python合并Excel文件中的多个Sheet

在日常工作中,我们经常会遇到需要处理多个Excel工作表(Sheet)的情况。比如,一个Excel文件中包含了一个月内每天的数据,每个工作表代表一天。有时候,为了方便分析,我们需要将这些分散的数据合并到…

数据结构单向链表的插入和删除(一)

链表 一、链表结构: (物理存储结构上不连续,逻辑上连续;大小不固定)二、单链表:三、单项链表的代码实现:四、开发可用的链表:四、单链表的效率分析: 一、链表结构&#x…

Javaweb基础-vue

Vue.js Vue是一套用于构建用户界面的渐进式框架。 起步 引入vue <head><script src"static/js/vue2.6.12.min.js"></script> </head> 创建vue应用 <body> <div id"index"><p>{{message}}</p> </div>…

Vulnhub:Me-and-My-Girlfriend-1

一.环境启动/信息收集 &#xff08;1&#xff09;根据物理地址用nmap的主机发现功能得出IP地址 nmap -P 192.168.138.0/24 //同网段下主机发现得到IP为192.168.138.180&#xff08;2&#xff09;做nmap的目录扫描和端口扫描来发现其他站带以及信息 nmap -p- 192.168.138.180 …

CTF(五)

导言&#xff1a; 本文主要讲述在CTF竞赛中&#xff0c;web类题目easyphp。 靶场链接&#xff1a;攻防世界 (xctf.org.cn) 参考文章原文链接&#xff1a;Web安全攻防世界05 easyphp&#xff08;江苏工匠杯&#xff09;_攻防世界 easyphp-CSDN博客 一&#xff0c;观察页面。…

玄机平台-应急响应-webshell查杀

首先xshell连接 然后进入/var/www/html目录中&#xff0c;将文件变成压缩包 cd /var/www/html tar -czvf web.tar.gz ./* 开启一个http.server服务&#xff0c;将文件下载到本地 python3 -m http.server 放在D盾中检测 基本可以确认木马文件就是这四个 /var/www/html/shell.p…

动态规划-子数组系列——乘积最大子数组

1.题目解析 题目来源&#xff1a;152.乘积最大子数组——力扣 测试用例 2.算法原理 1.状态表示 由于题目给的数组中可以包含负数&#xff0c;因此求最大乘积有两种情况&#xff1a; a.负数乘以最小数得出最大乘积 b.整数乘以最大数得出最大乘积 所以需要两个表分别求出最大最…

Leetcode 柱状图中最大的矩形

h 是右边界&#xff0c;连续多个高度递增的柱子&#xff0c;如果遇到下一个 h < 栈顶元素(是最大的元素&#xff0c;单调递增栈)&#xff0c;那么会不断出栈来更新计算最大面积。 并非是一次性计算出最大面积的&#xff0c;很重要的一点是while (!stack.isEmpty()这一部分的…

【Linux】多线程安全之道:互斥、加锁技术与底层原理

目录 1.线程的互斥 1.1.进程线程间的互斥相关背景概念 1.2.互斥量mutex的基本概念 所以多线程之间为什么要有互斥&#xff1f; 为什么抢票会抢到负数&#xff0c;无法获得正确结果&#xff1f; 为什么--操作不是原子性的呢&#xff1f; 解决方式&#xff1a; 2.三种加锁…

项目实战:构建 effet.js 人脸识别交互系统的实战之路

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀构建 effet.js &#x1f4d2;1. 什么是effet.js&#x1f4dc;2. 为什么需要使用effet.js&#x1f4dd;3. effet.js的功能&#x1f4da;4. 使用…