零基础学习性能测试第一章:核心性能指标-并发量
目录
- 零基础学习性能测试:第一章 - 核心性能指标:并发量
- 一、并发量核心概念解析
- 1. 并发量定义与分类
- 2. 并发量关键特性
- 二、并发量测试的核心价值
- 1. 业务意义三角模型
- 2. 实际工作场景应用
- 三、并发量测试实战指南
- 1. 测试工具配置要点
- 2. 并发测试四步流程
- 3. JMeter并发测试实操
- 四、并发瓶颈分析与优化
- 1. 并发瓶颈定位矩阵
- 2. 常见并发问题解决方案
- 3. 电商系统并发优化案例
- 五、工作应用模板与工具
- 1. 并发测试报告模板
- 2. 生产环境并发监控方案
- 3. Linux实时并发监控命令
- 六、并发量设计黄金法则
- 1. 并发用户估算公式
- 2. 并发测试策略选择
- 3. 并发测试检查清单
零基础学习性能测试:第一章 - 核心性能指标:并发量
本章核心目标:掌握并发量的本质定义、测量方法、与系统容量的关系,学会在实际工作中设计、执行并发测试并分析结果。
一、并发量核心概念解析
1. 并发量定义与分类
类型 | 定义 | 关键指标 | 应用场景 |
---|---|---|---|
用户并发 | 同时使用系统的用户数 | 在线用户数(Active Users) | 系统容量规划 |
操作并发 | 同时执行业务操作的用户数 | 并发操作数(Concurrent Operations) | 核心业务流程验证 |
连接并发 | 同时建立的网络连接数 | TCP连接数 | 服务器资源分配 |
处理并发 | 系统同时处理的请求数 | 工作线程数(Worker Threads) | 应用服务器调优 |
2. 并发量关键特性
特性 | 说明 | 工作应用 |
---|---|---|
时间维度 | 同一时间段而非同一时刻 | 压测时需设置合理的Ramp-up时间 |
资源占用 | 每个并发消耗CPU/内存等资源 | 根据资源消耗计算服务器承载量 |
状态保持 | 需要会话(Session)维护 | 配置合理的Session过期时间 |
排队效应 | 当并发超过系统能力时出现排队 | 监控等待队列长度 |
二、并发量测试的核心价值
1. 业务意义三角模型
2. 实际工作场景应用
场景 | 并发量测试目标 | 工作成果 |
---|---|---|
新系统上线 | 验证1000并发用户稳定性 | 容量评估报告 |
大促活动准备 | 测试5000并发支付能力 | 扩容方案建议书 |
架构优化验证 | 对比优化前后并发能力 | 性能优化ROI分析 |
故障复盘 | 重现线上高并发故障场景 | 根本原因分析报告 |
工作模板:并发测试计划
登录系统并发测试计划
- 测试目标:验证2000并发登录能力
- 并发策略:
- 阶梯增加:500→1000→1500→2000用户
- 每阶段持续10分钟
- 通过标准:
- 错误率<0.5%
- P95响应时间<2秒
- 无系统崩溃
三、并发量测试实战指南
1. 测试工具配置要点
工具 | 并发配置项 | 关键参数说明 |
---|---|---|
JMeter | 线程组(Thread Group) | 线程数=并发用户数 |
Ramp-up时间 | 控制用户启动速度 | |
LoadRunner | Virtual User Generator | Vuser数量=并发用户数 |
Ramp Up/Down | 设置递增/递减策略 | |
Locust | User Count | 并发的模拟用户数 |
Spawn Rate | 每秒启动用户数 |
2. 并发测试四步流程
3. JMeter并发测试实操
步骤演示:
- 创建线程组
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="并发测试"><intProp name="ThreadGroup.num_threads">1000</intProp><intProp name="ThreadGroup.ramp_time">300</intProp> <!-- 5分钟启动所有用户 --> </ThreadGroup>
- 添加同步定时器(Synchronizing Timer)
<SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="集合点"><intProp name="groupSize">100</intProp> <!-- 每100用户同时触发 --> </SyncTimer>
- 配置监听器收集数据
- 聚合报告(Aggregate Report)
- 响应时间图(Response Time Graph)
四、并发瓶颈分析与优化
1. 并发瓶颈定位矩阵
2. 常见并发问题解决方案
问题现象 | 根本原因 | 优化方案 | 效果预期 |
---|---|---|---|
连接拒绝(Connection refused) | 服务器连接数满 | 增加最大连接数 | 立即解决连接问题 |
响应时间指数级增长 | 线程竞争资源 | 减少锁粒度/使用无锁数据结构 | 提升50%+吞吐量 |
数据库CPU 100% | 锁竞争/SQL低效 | 优化查询/引入缓存 | 降低80%数据库负载 |
内存溢出(OOM) | 内存泄漏/配置不合理 | 修复泄漏/增大堆内存 | 避免系统崩溃 |
3. 电商系统并发优化案例
-
初始问题:
- 500并发时订单失败率35%
- 响应时间 > 15秒
-
瓶颈分析:
- 数据库连接池满(100/100)
- 库存更新行锁竞争
- 支付服务单点瓶颈
-
优化方案:
- 数据库连接池扩大至500
- 库存扣减改用Redis原子操作
- 支付服务增加节点并负载均衡
-
优化结果:
- 支持2000并发下单
- 失败率降至0.1%
- 响应时间<1秒
五、工作应用模板与工具
1. 并发测试报告模板
系统并发能力测试报告
测试目标
验证用户中心支持3000并发查询
测试环境
- 服务器配置:8C16G × 3
- 测试工具:JMeter 5.6.2
- 模拟用户:3000虚拟用户
测试结果
并发阶段 | 错误率 | P95响应时间 | 系统负载 |
---|---|---|---|
1000用户 | 0% | 320ms | CPU 45% |
2000用户 | 0.2% | 850ms | CPU 78% |
3000用户 | 4.5% | 2300ms | CPU 98% |
结论与建议
- 系统安全并发为2000用户
- 3000并发时需优化:
- 增加Redis缓存用户数据
- 数据库查询添加索引
- 增加2个应用节点
2. 生产环境并发监控方案
Prometheus + Grafana 看板配置
{"panels": [{"type": "graph","title": "实时并发用户数","targets": [{"expr": "sum(active_users)","interval": "10s"}]},{"type": "gauge","title": "数据库连接池使用","targets": [{"expr": "mysql_connection_pool_used / mysql_connection_pool_max * 100"}]}]
}
3. Linux实时并发监控命令
# 查看TCP连接数(按状态分组)
ss -s# 监控HTTP服务并发连接
watch "netstat -an | grep :80 | awk '{print \$6}' | sort | uniq -c"# 输出示例:
# 150 ESTABLISHED
# 30 TIME_WAIT
# 5 CLOSE_WAIT
六、并发量设计黄金法则
1. 并发用户估算公式
并发用户数 = 平均在线用户数 × 峰值系数
- 平均在线用户数 = 日活用户(DAU) × 平均在线时长 / 86400
- 峰值系数 = 高峰时段流量 / 平均流量(通常2-5倍)
工作应用示例:
- DAU = 10万用户
- 平均在线时长 = 30分钟
- 峰值系数 = 3倍
- 并发用户数 = (100000×1800/86400) × 3 ≈ 6250用户
2. 并发测试策略选择
3. 并发测试检查清单
测试前准备
- 确定目标并发量(业务需求)
- 准备测试账号池(避免重复登录)
- 配置资源监控(服务器/DB/网络)
- 设置集合点(关键业务同步触发)
测试中关注
- 错误类型分布(连接超时/服务不可用)
- 资源饱和度曲线(CPU/内存/IO)
- 中间件指标(线程池/连接池)
测试后分析
- 绘制并发-响应时间曲线
- 统计各并发级别错误率
- 定位首个性能拐点
工作口诀:
并发量测承载,分阶梯找拐点
瓶颈先查连接,再验线程资源
监控要做全面,优化要看瓶颈
掌握并发量指标将使你在工作中:
- 准确评估系统真实容量
- 预防高并发场景故障
- 制定科学的扩容策略
- 提升系统资源利用率
- 保障业务高峰稳定性