招投标 网站建设 山西,唐山网站建设技术支持,建筑设计常用软件,搜狐做网站初衷
之前在公司做的性能测试基本上都是关于数据库的#xff0c;针对接口的性能测试还是比较少一点。考虑到后边大模型问答产品的推广#xff0c;公司方面也要求对相关接口进行压测#xff0c;也趁着这个机会#xff0c;对jmeter进行深入研究#xff0c;进一步加强自己性…初衷
之前在公司做的性能测试基本上都是关于数据库的针对接口的性能测试还是比较少一点。考虑到后边大模型问答产品的推广公司方面也要求对相关接口进行压测也趁着这个机会对jmeter进行深入研究进一步加强自己性能测试方面的专业知识。
我希望能够结合自己的实际经历与心路历程包括踩过的坑一并与大家进行分享共同提高自己的技术。
在这个系列里面我也会逐步记录自己成长的历程
Jmeter介绍
以这个接口为例
线程组Thread Group概述
线程组是 JMeter 中最基本的元素用于控制模拟用户的行为。可以把线程组看作是一群虚拟用户的集合这些虚拟用户将按照设定的规则来执行测试计划。例如在测试一个 Web 应用时线程组中的每个线程就代表一个虚拟用户这些用户会并发地访问应用的各种接口。
线程数Number of Threads
含义 线程数表示同时执行测试任务的虚拟用户数量。例如将线程数设置为 100就相当于有 100 个虚拟用户同时对目标系统进行操作。这个参数直接决定了压测的并发程度。应用场景和影响 在测试一个小型的企业内部系统接口时如果预计同时使用该接口的用户不超过 50 人那么可以将线程数设置为 50 来模拟实际的使用场景观察系统在这种负载下的响应情况。如果线程数设置过高比如对于一个性能较差的系统设置了过多的线程数可能会导致系统崩溃或者响应时间过长因为系统无法承受这么多并发请求。
Ramp - Up Periodin seconds
含义 它表示所有线程在多长时间内全部启动完成。例如设置线程数为 100Ramp - 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 小时内线程会按照循环次数的设定不断执行测试任务而一旦超过这个时间测试就会停止。这对于模拟长时间运行的系统或者进行长时间稳定性测试非常有用。阶段性测试策略 调度器可以结合循环次数来实现阶段性的测试策略。比如在测试一个具有多种功能模块的系统时调度器可以先安排一个阶段在这个阶段中设置较低的循环次数让线程重点测试系统的某个核心功能模块。然后通过调度器切换到下一个阶段增加循环次数使线程对系统的其他功能模块进行更深入的测试。这种方式可以更有针对性地利用循环次数来进行全面的系统性能测试。