本文目录导读:

- 第一步:明确要测的“并发”是什么
- 第二步:选择并发检测工具
- 第三步:核心操作步骤(以最常用的 JMeter 为例)
- 第四步:另一种流行工具 Locust(基于Python,更灵活)
- 第五步:关键注意事项(避免测不准)
- 并发测试的实战步骤
模拟多个用户/请求同时访问目标系统,然后观察系统在压力下的表现(如响应时间、吞吐量、错误率)。
具体怎么测,取决于你选择的工具和场景,下面以最主流的几类工具为例,说明操作步骤和关键参数。
第一步:明确要测的“并发”是什么
在开始测试前,先理清你的目标,否则数据没有意义。
- 并发用户数:系统同一时刻需要处理多少活跃用户(1000人同时在线玩网游)。
- 并发请求数(QPS/TPS):系统每秒能处理多少请求或事务(每秒处理1万次支付)。
- 并发连接数:数据库或服务器端口同时维持多少TCP连接。
大多数工具测的是“并发请求”的模拟能力。
第二步:选择并发检测工具
| 工具 | 特点 | 适用场景 |
|---|---|---|
| JMeter | 老牌、免费、功能全面、支持插件、GUI和命令行。 | Web应用、API、数据库、FTP等几乎所有后端服务。 |
| Locust | 基于Python,用代码写测试场景,更灵活,能模拟复杂用户行为。 | Web应用、API,需要自定义用户行为(如浏览、下单、支付)。 |
| wrk / wrk2 | 极轻量、高性能、命令行工具,用Lua脚本扩展。 | 纯HTTP接口性能测试,追求高并发压力和低资源消耗。 |
| Postman / 新版本Postman | 易用,可转为集合测试。 | 快速验证单个或少量API接口在并发下的表现。 |
| 阿里云PTS / LoadRunner | 商业或云原生服务,自动生成报告,支持大规模分布式压测。 | 企业级全链路压测,需要精确到代码级性能分析。 |
第三步:核心操作步骤(以最常用的 JMeter 为例)
假设你要测试一个登录接口 /api/login,模拟 100 个用户同时登录。
-
创建测试计划
- 打开 JMeter。
- 右键点击“测试计划” -> 添加 -> 线程(用户) -> 线程组。
-
配置线程组(模拟并发)
- 线程数:填写 100(模拟的并发用户数)。
- Ramp-Up 时间 (秒):填写 10(在10秒内均匀启动这100个用户,如果填0,则100个用户瞬间全部启动,产生冲击波效应)。
- 循环次数:填写 1(每个用户只发送1次请求,如果需要持续施压,勾选“永远”,并设置持续时间)。
-
添加请求(模拟用户操作)
- 右键点击“线程组” -> 添加 -> 取样器 -> HTTP 请求。
- 填写接口信息:协议(http/https)、服务器IP、端口、路径 (
/api/login)、方法(POST)、参数或Body(用户名和密码)。
-
添加监听器(看结果)
- 右键点击“线程组” -> 添加 -> 监听器 -> 汇总报告 (看吞吐量、平均响应时间、错误率)。
- 右键点击“线程组” -> 添加 -> 监听器 -> 图形结果 (看响应时间变化趋势)。
- 右键点击“线程组” -> 添加 -> 监听器 -> 察看结果树 (看具体请求和响应内容,用于调试)。
-
运行测试
- 点击绿色三角形按钮运行。
- 观察“汇总报告”中的关键指标:
- #样本:总请求数。
- 平均:平均响应时间(ms)。
- 中位数:50%的请求在这个时间内完成。
- 90% 百分位:90%的请求在这个时间内完成。
- 错误%:关键指标,超过0%说明系统有异常。
- 吞吐量:每秒处理的请求数 (req/s 或 TPS)。
第四步:另一种流行工具 Locust(基于Python,更灵活)
如果你更习惯用代码控制,Locust 更直观。
-
安装:
pip install locust -
编写测试脚本 (locustfile.py):
from locust import HttpUser, task, between class MyUser(HttpUser): # 每个用户模拟操作之间的等待时间 (1-5秒) wait_time = between(1, 5) @task def login(self): # 模拟100个用户同时调用登录接口 self.client.post("/api/login", json={"username": "test", "password": "123"}) -
运行测试:
# --users=100 模拟100个并发用户 # --spawn-rate=10 每秒启动10个用户(即10秒内达到100并发) # --run-time=5m 持续运行5分钟 locust -f locustfile.py --host=http://your-server-ip:port --users=100 --spawn-rate=10 --run-time=5m
-
查看结果:
- 通过 Web 界面 (默认
http://localhost:8089) 实时查看 RPS、响应时间、错误率。 - 或者运行
locust -f locustfile.py --headless -u 100 -r 10 --run-time 5m --csv=result生成 CSV 报告。
- 通过 Web 界面 (默认
第五步:关键注意事项(避免测不准)
-
并发模型理解:
- 工具发起的并发 = 客户端的并发线程数,比如你只开了一台电脑用JMeter跑100个线程,但你的电脑CPU只有4核,工具本身可能成为瓶颈,无法真正“发出100个请求。
- 正确做法:让工具“发出请求,对于JMeter,将线程组中的“调度器”设为无,并且Ramp-Up时间设为0(瞬间并发),对于Locust,将
spawn-rate设得非常高(如1000),模拟瞬间爆发。
-
工具本身是瓶颈:
- 如果使用单台机器压测,确保工具所在机器的资源(CPU、内存、网络连接数)足够,否则你测的是“工具的并发能力”。
- 需要大规模并发(如上万QPS)时,要用分布式压测(多台机器同时施压)。
-
预热与稳态:
- 不要只看第一个10秒的数据,系统有缓存、连接池、JIT优化,通常需要运行一段时间(如5-10分钟)进入稳态后,再记录数据。
-
观察目标系统:
- 压测时必须同时监控目标服务器(CPU、内存、磁盘IO、网络带宽、数据库慢查询)。
- 现象:如果CPU没满但响应变慢,可能是数据库或磁盘IO瓶颈,如果CPU打满,则是计算能力瓶颈。
-
不要只测平均响应时间:
- 关注 P99(99%的请求) 和 P999,很多系统平均响应时间1秒,但P99是10秒,这对用户体验是灾难。
- 关注 错误率,错误率一旦超过1%或5%,系统通常认为不可用。
并发测试的实战步骤
- 单接口压测:先压测最核心的接口(如登录、商品列表、下单)。
- 混合场景压测:按真实用户比例混合压测多个接口(如70%浏览、20%搜索、10%下单)。
- 找拐点:逐步增加并发用户数(如从10 -> 50 -> 100 -> 500 -> 1000),找到系统吞吐量开始不升反降的那个点(拐点),那才是系统的真实容量。
- 稳定性测试:在80%拐点压力下,持续运行30分钟或更久,观察内存泄漏、连接超时、响应时间缓慢增长等问题。
一句话记住:并发测试不是“看软件能不能跑”,而是通过持续加压,系统性地找到它在何种压力下开始崩溃或变慢。
标签: 压力检测
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播