Jmeter-阶梯式压测Concurrency Thread Group

简介: Jmeter-阶梯式压测Concurrency Thread Group

在性能测试中经常提到并发,但是实际上很少会有同时很多请求的,如果一下子就来很多的请求,服务器很快就会被压垮。都是在逐渐增加,然后达到一个预期值,再持续运行一段时间,其实阿里云的PTS配置压测策略也有这种的。

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

在jmeter中有插件可以帮助我们实现这种场景。(推荐使用新版的bzm - Concurrency Thread Group)

1.Stepping Thread Group

通过插件管理器下载插件Custom Thread Groups即可,点击了Apply后就等待安装,安装后jmeter会自动重启的。

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.pngThis group will start N threads:设置线程组启动的线程总数为N个;First,wait for N seconds:启动第一个线程之前,需要等待N秒;Then start N threads:设置最开始时启动N个线程;ZNext,add X threads every Y seconds,using ramXp-up Z seconds:每隔Y秒,启动X个线程,在Z秒内启动X个线程;Then hold load for N seconds:启动的线程总数达到最大值之后,再持续运行N秒;Finally,stop X threads every Y seconds:每Y秒停止X个线程;

2.Concurrency Thread Group

测试计划右键添加线程组->bzm - Concurrency Thread Group

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.pngTarget Concurrency: 预期客户端最大并发线程数为100Ramp Up Time(min): 在1min内启动100个线程Ramp-up Steps Count: 在上述时间内,分5次启动Hold Target Rate Time (min): 达到目标并发线程数100后,再并发运行30秒Thread Iterations Limit:线程迭代次数限制,即循环次数(空,即为一次)(无特殊情况,建议不设置该选项的值)Log Threads Status into File:将线程状态记录到文件中

3.Ultimate Thread Group

测试计划右键添加->线程组->jp@gc - Ultimate Thread Group

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.pngStart Threads Count:当前行启动的线程总数Initial Delay/sec:延时启动当前行的线程,单位:秒Startup Time/sec:启动当前行所有线程达峰值所需时间,单位:秒Hold Load For/sec:当前行线程达到峰值后的稳定加载时间,单位:秒Shutdown Time:停止当前行所有线程所需时间,单位:秒

上图含义:

第一个线程:没有延时,在30秒内启动100个线程数,到达100个后稳定运行60秒后,在再10秒内结束100个线程数。第二、第三行同理。

[mark]需要注意的是如果设置多行其实运行时是一起运行的,并不是第一行设置的结束了再进行第二行,点击开始后,立马启动第一行设置的线程,启动2秒后,第二行和第三行的线程开始启动(此时第一行设置的线程数也是在启动中,同步进行的)[/mark]

三.查看结果

以上阶梯式压测可以添加 jp@gc - Active Threads Over Time 察看具体请求结果图(需要安装插件3 Basic graphs)

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

 

总体来讲:普通的压测,线程产生的方式是固定的,通过计算得出每秒产生X个线程(在线程中配置的,线程数10,5秒,循环2次;这样计算出来就是每0.5s产生一个线程,共计循环2次),每个线程从请求发出,到服务端处理再返回接收,这样一个线程的完整生命周期就结束了,后面就没他啥事了。而阶梯式压测能保证活跃的线程数在一个数值,当一个线程结束时为了保持活跃度,jmeter会立马再产生一个新的线程来运行,维护活跃的线程数,具体的线程产生间隔时间是根据实际运行状态来决定的,旧的线程结束的快,新的产生就产生得快,因此间隔时间没有固定值(而普通的压测间隔时间就是固定的值)。阶梯式压测可以控制的是在一段时间内的线程数,所以可能相同配置每次阶梯式压测,总的线程数都是不一样的,测出来的结果也是不同的。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
1月前
|
Ubuntu Java 测试技术
【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
【Linux】一站式教会:Ubuntu(无UI界面)使用apache-jmeter进行压测
|
1月前
|
消息中间件 Java 测试技术
性能工具之Jmeter扩展函数及压测ActiveMQ实践
【5月更文挑战第18天】性能工具之Jmeter扩展函数及压测ActiveMQ实践
54 5
|
28天前
|
监控 数据可视化 测试技术
性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控
【5月更文挑战第23天】性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控
74 6
性能工具之JMeter+InfluxDB+Grafana打造压测可视化实时监控
|
1月前
|
测试技术 UED
PTS压测问题之资源准备好慢如何解决
PTS(Performance Testing Service)是一项面向网站、应用等提供的压力测试服务,用于模拟不同场景下的用户访问,评估系统的性能表现;在进行PTS压测时,可能会出现一些异常或报错,本合集将PTS压测中频繁出现的问题及其解决办法进行汇编,旨在帮助用户更有效地进行性能测试和问题定位。
258 1
|
1月前
|
Web App开发 Java 测试技术
秒懂HTTPS接口(JMeter压测篇)
【5月更文挑战第11天】秒懂HTTPS接口(JMeter压测篇)
42 2
秒懂HTTPS接口(JMeter压测篇)
|
1月前
|
网络协议 JavaScript 前端开发
性能工具之Jmeter压测Hprose RPC服务
【5月更文挑战第19天】性能工具之Jmeter压测Hprose RPC服务
37 5
|
1月前
|
JSON JavaScript Java
性能工具之Jmeter压测Thrift RPC服务
【5月更文挑战第21天】性能工具之Jmeter压测Thrift RPC服务
34 1
|
12天前
|
监控 数据可视化 Java
掌握 JMeter 插件管理器:提升性能测试的利器
Apache JMeter 是一款强大的性能测试工具,其灵活性和扩展性使其在性能测试领域广受欢迎。JMeter 插件管理器(JMeter Plugins Manager)为用户提供了一个方便的平台来安装、更新和管理各种插件,从而大大扩展了 JMeter 的功能。
17 0
|
12天前
|
测试技术 Linux Apache
掌握JMeter参数化技巧:通过CSV文件实现高效登录压测
在本文中,我们将探讨如何使用 Apache JMeter 通过 CSV 数据文件进行登录性能测试参数化。首先创建一个包含用户名和密码的 `users.csv` 文件。接着在 JMeter 中,创建测试计划,添加线程组,配置 CSV 数据集,设置文件路径、编码及变量名。然后,创建 HTTP 请求并添加参数,使用 `${username}` 和 `${password}` 引用 CSV 中的数据。最后,添加监听器如查看结果树和聚合报告以分析测试结果。通过这种方法,能更有效地模拟真实用户行为,提高测试覆盖率,助力性能瓶颈的发现和优化。
25 0
|
1月前
|
JSON 网络协议 Java
使用Jmeter进行功能和性能测试
使用Jmeter进行功能和性能测试