【jmeter】jmeter的线程组功能的详细介绍

news/2024/11/13 2:43:29/

初衷

之前在公司做的性能测试基本上都是关于数据库的,针对接口的性能测试还是比较少一点。考虑到后边大模型问答产品的推广,公司方面也要求对相关接口进行压测,也趁着这个机会,对jmeter进行深入研究,进一步加强自己性能测试方面的专业知识。

我希望能够结合自己的实际经历与心路历程,包括踩过的坑,一并与大家进行分享,共同提高自己的技术。

在这个系列里面,我也会逐步记录自己成长的历程

Jmeter介绍

以这个接口为例:
在这里插入图片描述

线程组(Thread Group)概述

线程组是 JMeter 中最基本的元素,用于控制模拟用户的行为。可以把线程组看作是一群虚拟用户的集合,这些虚拟用户将按照设定的规则来执行测试计划。例如,在测试一个 Web 应用时,线程组中的每个线程就代表一个虚拟用户,这些用户会并发地访问应用的各种接口。

线程数(Number of Threads)

  • 含义:
    线程数表示同时执行测试任务的虚拟用户数量。例如,将线程数设置为 100,就相当于有 100 个虚拟用户同时对目标系统进行操作。这个参数直接决定了压测的并发程度。
  • 应用场景和影响:
    在测试一个小型的企业内部系统接口时,如果预计同时使用该接口的用户不超过 50 人,那么可以将线程数设置为 50 来模拟实际的使用场景,观察系统在这种负载下的响应情况。如果线程数设置过高,比如对于一个性能较差的系统设置了过多的线程数,可能会导致系统崩溃或者响应时间过长,因为系统无法承受这么多并发请求。

Ramp - Up Period(in seconds)

  • 含义:
    它表示所有线程在多长时间内全部启动完成。例如,设置线程数为 100,Ramp - Up Period 为 10 秒,那么 JMeter 会在 10 秒内逐步启动这 100 个线程,平均每秒启动 10 个线程。
  • 应用场景和影响:
    当测试一个新开发的系统时,如果想慢慢增加负载来观察系统在不同负载阶段的性能变化,可以适当设置较长的 Ramp - Up Period。这样可以更细致地了解系统从低负载到高负载过程中的性能瓶颈。如果 Ramp - Up Period 设置得过短,可能会导致系统瞬间承受较大的压力,出现异常情况,无法准确评估系统在逐渐增加负载过程中的性能。

循环次数(Loop Count)

  • 含义:
    循环次数决定了每个线程执行测试任务的次数。例如,设置循环次数为 5,表示每个虚拟用户(线程)会重复执行测试计划 5 次。如果设置为 “永远(Forever)”,则线程会一直循环执行测试任务,直到手动停止压测。
  • 应用场景和影响:
    在测试一个具有缓存机制的系统时,如果想观察缓存对系统性能的影响,可以通过设置不同的循环次数来实现。比如,先设置较低的循环次数,让系统有机会缓存部分数据,然后再设置较高的循环次数,观察缓存是否能够有效降低系统的响应时间。循环次数设置的多少直接影响了总的请求数量和测试的持续时间。

调度器(Scheduler)概述

  • 在 JMeter 中,调度器是用于更精细地控制线程执行时间和执行策略的工具。它允许用户根据特定的时间要求和测试场景来安排线程的启动、停止以及执行的节奏。

调度器、线程数、Ramp-Up Period、循环次数的联系

与线程数的联系

  • 负载控制:
    线程数确定了总的模拟用户数量,而调度器可以决定这些用户在什么时间范围内参与测试。例如,当设置了较高的线程数(如 1000 个线程),如果希望这些用户在特定的时间段(如工作时间 9:00 - 17:00)内进行测试,可以通过调度器来实现。调度器可以设置测试的开始时间和结束时间,从而在这个时间窗口内按照线程数所确定的负载规模对目标系统进行压测。
  • 动态调整负载:
    在某些复杂的测试场景中,可能需要根据系统的响应情况动态调整负载。例如,在测试一个自适应负载均衡的系统时,开始时可以通过调度器设置较低的线程数(如 100 个线程)来观察系统的基本性能。随着测试的进行,如果系统性能表现良好,可以通过调度器在后续阶段增加线程数(如增加到 500 个线程),以进一步测试系统的负载承受能力。

与 Ramp - Up Period 的联系

  • 负载增长节奏控制:
    Ramp - Up Period 规定了线程启动的速度,调度器与之相结合可以更灵活地控制负载增长的节奏。例如,在一个分布式系统的性能测试中,调度器可以设置在系统负载较低的夜间时段开始测试,并且通过 Ramp - Up Period 参数控制线程的缓慢启动。如果 Ramp - Up Period 设置为 60 秒,调度器可以确保在这个规定的时间内,按照设定的速度逐步增加线程,使得系统能够平稳地从低负载状态过渡到高负载状态,避免系统因为突然的高负载而出现异常。
  • 时间依赖的负载增长:
    调度器可以使 Ramp - Up Period 具有时间依赖性。比如,在模拟一个电商平台的促销活动场景时,根据活动开始时间(由调度器控制),可以设置在活动开始后的前 5 分钟内完成所有线程的启动(通过 Ramp - Up Period 来设置具体的启动时间),这样就可以模拟出促销活动开始时用户流量逐渐增加的实际情况。

与循环次数的联系

  • 测试持续时间和负载模式:
    循环次数决定了每个线程执行测试任务的重复次数,调度器可以根据时间来限制这种重复。例如,设置循环次数为 “永远(Forever)”,但通过调度器可以将测试限制在一个特定的时间范围内(如 2 小时)。这样,在这 2 小时内,线程会按照循环次数的设定不断执行测试任务,而一旦超过这个时间,测试就会停止。这对于模拟长时间运行的系统或者进行长时间稳定性测试非常有用。
  • 阶段性测试策略:
    调度器可以结合循环次数来实现阶段性的测试策略。比如,在测试一个具有多种功能模块的系统时,调度器可以先安排一个阶段,在这个阶段中设置较低的循环次数,让线程重点测试系统的某个核心功能模块。然后,通过调度器切换到下一个阶段,增加循环次数,使线程对系统的其他功能模块进行更深入的测试。这种方式可以更有针对性地利用循环次数来进行全面的系统性能测试

http://www.ppmy.cn/news/1545894.html

相关文章

使用Python分析股票价格数据并计算移动平均线的实用指南

使用Python分析股票价格数据并计算移动平均线的实用指南 在金融市场中,移动平均线(Moving Average, MA)是一种常用的技术分析工具,用于平滑价格数据,帮助投资者识别趋势。本文将详细介绍如何使用Python分析股票价格数据,并计算移动平均线。我们将通过一个实际的案例来演…

OpenMVS OpenMVG 笔记

OpenMVS & OpenMVG 笔记 OpenMVS 和 OpenMVG 都是计算机视觉中用于三维重建的开源库。两者都可以实现从图像集合中计算出相机位姿和三维点云,但它们的重点略有不同。 OpenMVG 主要关注于从输入图像集合中提取稠密的特征匹配,通过这些匹配计算相机的…

基于51单片机的温控电风扇proteus仿真

地址:https://pan.baidu.com/s/1vgYgY41tp_axxVFTHAPwFg 提取码:1234 仿真图: 芯片/模块的特点: AT89C52/AT89C51简介: AT89C52/AT89C51是一款经典的8位单片机,是意法半导体(STMicroelectron…

【死锁处理案例之一】

数据库死锁问题分析与优化:以 DELETE ... WHERE name LIKE "%name" 和插入操作为例 引言 在数据库应用中,死锁是一种常见的并发问题。当两个或多个事务彼此等待对方持有的资源时,就会导致死锁,最终所有相关的事务都无法继续执行。这种情况不仅影响应用程序的性…

量化交易系统开发-实时行情自动化交易-Okex K线数据

19年创业做过一年的量化交易但没有成功,作为交易系统的开发人员积累了一些经验,最近想重新研究交易系统,一边整理一边写出来一些思考供大家参考,也希望跟做量化的朋友有更多的交流和合作。 接下来聊聊基于Okex交易所API获取K线数…

GNU构建系统和Autotool

1、前言 经常使用Linux的开发人员或者运维人员,可能对configure->make->make install相当熟悉。事实上,这叫GNU构建系统,利用脚本和make程序在特定平台上构建软件。这种方式成为一种习惯,被广泛使用。本文从用户视角和开发…

ORB_SLAM3安装

ORB_SLAM3安装 一.前期准备1.1ubuntu查看当前版本的命令1.2 根据ubuntu版本,更新下载软件源1.3 先下载git1.4 vim语法高亮1.5 常见的linux命令 二.ORB-SLAM3下载2.1 ORB_SLAM3源码下载2.2 安装依赖库2.2.1 依赖库2.2.2 安装pangolin2.2.3 安装opencv2.2.4 Eigen3安装…

Spring Boot技术在导师双选系统中的应用

第一章 绪论 1.1 选题背景 如今的信息时代,对信息的共享性,信息的流通性有着较高要求,尽管身边每时每刻都在产生大量信息,这些信息也都会在短时间内得到处理,并迅速传播。因为很多时候,管理层决策需要大量信…