并发测试工具如何测试并发访问 - 电脑手机工具软件下载 - 免费实用工具合集

365BET 2026-07-29 02:34:07 admin 访问量: 4857 评分: 564
并发测试工具如何测试并发访问 - 电脑手机工具软件下载 - 免费实用工具合集

本文目录导读:

核心步骤概览以 JMeter 为例的详细操作流程除了 JMeter 的其他方案(根据场景选择)必须注意的坑与最佳实践并发测试工具的核心原理是模拟多个用户(或客户端)同时向目标系统发送请求,以观测系统在高负载下的性能表现(如吞吐量、响应时间、错误率)和稳定性。

下面以最流行的开源工具 Apache JMeter 为例,详细说明如何进行并发访问测试,其他工具(如 Locust、Gatling、wrk)逻辑类似。

核心步骤概览

设计测试场景:明确你要模拟什么用户行为(登录、搜索、下单?)。

配置线程组:这是“并发”的核心,设置有多少个“虚拟用户”同时干活。

添加取样器:定义虚拟用户具体要发什么请求(HTTP请求、JDBC请求等)。

添加监听器:收集并展示测试结果。

运行并分析:启动测试,观察系统反应。

以 JMeter 为例的详细操作流程

假设你要测试一个电商网站的商品搜索接口 https://api.example.com/search?q=手机。

创建测试计划

打开 JMeter,右键点击 “测试计划” -> 添加 -> Threads (Users) -> 线程组。

配置线程组(设置并发量)

这是最关键的步骤,你需要在这里定义“并发”的模型。

线程数:虚拟用户的数量,设置为 100,就代表同时有 100 个用户。

Ramp-Up Period (秒):爬坡时间,设置为 10,代表 10 秒内启动 100 个用户(每秒启动 10 个)。不建议设为 0(瞬间全部启动),除非你真的需要模拟“闪电崩溃”。

循环次数:每个用户执行多少次请求,设置为 10,代表 100 个用户每人执行 10 次,共 1000 次请求。

调度器:可以设置测试持续时长,如运行 60 秒。

典型并发测试场景配置:

恒定负载:线程数=200,Ramp-Up=20,循环次数=无限,调度器时长=300秒,模拟 200 用户持续压测 5 分钟。

阶梯加压:使用“步进线程组”(jp@gc - Stepping Thread Group 插件),每 10 秒增加 20 个用户,直到达到 200,用于观察系统在哪个并发量开始崩溃。

突发测试:线程数=500,Ramp-Up=5,模拟 5 秒内突然涌入 500 人,看系统是否扛得住。

添加 HTTP 请求默认值(可选但推荐)

右键点击线程组 -> 添加 -> 配置元件 -> HTTP 请求默认值。

填写服务器 IP 或域名(api.example.com)、端口(443)、协议(https),这样所有请求都无需重复填写。

添加实际请求(取样器)

右键点击线程组 -> 添加 -> 取样器 -> HTTP 请求。

方法:GET

路径:/search

Parameters:添加参数 q,值为 手机。

添加监听器(看结果)

右键点击线程组 -> 添加 -> 监听器,最常用的几个:

查看结果树:调试用,可以看到每个请求的请求头、响应数据(比如返回的 JSON),高并发测试时务必关掉,否则会消耗大量内存导致测试结果不准。

聚合报告:核心报告,显示:

#Samples:总请求数。

Average:平均响应时间(ms)。

90% Line / 95% Line / 99% Line:最重要,表示 90%/95%/99% 的请求在多少毫秒内完成,反映了“体感”上的性能。

Throughput:吞吐量(每秒请求数,TPS),系统处理能力的核心指标。

Error%:错误率,超过0%通常表示有问题,超过1%需严重关注。

图形结果 / 用表格查看结果:可视化监控。

运行测试

点击绿色“启动”按钮。

除了 JMeter 的其他方案(根据场景选择)

工具

特点

适合场景

JMeter

功能全面,图形化,支持多种协议(HTTP、JDBC、FTP等)。

复杂业务流程(如登录->加购->下单)、非开发人员使用、企业级全链路压测。

Locust

基于 Python 编写,代码即脚本,灵活性极高,内置 Web UI。

开发团队、需要复杂逻辑(如动态关联、异步任务)的压测。

wrk

命令行工具,基于 C 语言,性能极高,占用系统资源极低。

简单 HTTP API 的高并发压力测试、基准测试(Benchmark)。

k6

脚本式(JavaScript),作为开源工具可集成到 CI/CD 流水线中。

DevOps 团队、性能即代码、自动化回归测试。

Gatling

基于 Scala/Java,Akka 架构,代码可读性好,生成 HTML 报告精美。

注重代码质量和报告美观度的开发团队。

必须注意的坑与最佳实践

不要在 GUI 模式下进行高并发测试!

JMeter 是 Java 写的,GUI 模式会消耗大量内存,高并发测试(如 >100 线程)应使用命令行模式:# 无GUI运行,参数:-n 非GUI, -t 脚本路径, -l 结果文件

jmeter -n -t MyTestPlan.jmx -l results.jtl -e -o /report

生成的 report 文件夹里就是漂亮的 HTML 报告。

确保客户端资源充足

瓶颈可能在测试机本身,如果你的电脑是 8G 内存,开 1000 个线程,JMeter 自己可能会卡死或报 OutOfMemoryError。

此时需要分布式压测:1 台 Master + N 台 Slave(Agent),分散压力。

使用关联和数据参数化

不要所有用户都搜索“手机”,使用 CSV Data Set Config 或函数助手 _RandomString 生成不同的商品名,模拟真实用户输入。

对于需要登录的系统,使用 正则表达式提取器 或 JSON 提取器 从登录响应中提取 token/cookie,并应用到后续请求中。

观察监控指标

不要只看响应时间,当系统扛不住时,响应时间会突然飙升(拐点),TPS 不再增长甚至下降,错误率开始出现。

需要同时看服务器端监控:CPU 使用率、内存、磁盘 I/O、网络、数据库连接数,CPU 已经 100%,那问题在服务器算力不够;CPU 只有 30% 但响应慢,那可能是代码锁等待或数据库慢查询。

确定“用户并发” vs “并发请求”

用户并发:如 100 个用户同时点击“登录”,每个用户发 1 个请求,并发请求数为 100。

并发连接数:HTTP 协议中,一个用户可能同时发送多个请求(如网页加载多个资源),这是更底层的东西,通常用 wrk 测试。

一个硬核的并发测试流程应该是:

明确目标:要求系统能支持 1000 用户同时在线,核心接口响应时间 < 200ms,TPS > 500。

脚本开发:用 JMeter/Locust 编写业务脚本,并做好参数化、关联和断言。

试运行:用少量用户(如 10 个)跑一次,检查脚本逻辑是否正确,结果树里数据是对的。

阶梯加压:从低到高逐步增加并发量(如 50->100->200->400),每次都观察TPS 和响应时间的拐点。

定位瓶颈:当 TPS 不增长或响应时间飙升时,联合运维人员一起查看服务器 CPU、内存、DB 慢查询、网络带宽等,找到根本原因。

优化与复测:开发修复代码或调整配置后,重新跑相同的测试用例,验证优化效果。

一句话总结:使用线程数模拟并发用户数,通过 Ramp-Up 时间控制爬坡速率,关注 TPS、90% 响应时间和错误率这三驾马车,并时刻警惕测试机成为瓶颈。

标签: Locust

本文地址:

https://lianqi.tech/post/485.html

版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。

相关数据