零基础学习性能测试第一章:核心性能指标-并发量

目录

  • [零基础学习性能测试:第一章 - 核心性能指标:并发量](#零基础学习性能测试:第一章 - 核心性能指标:并发量)
    • 一、并发量核心概念解析
      • [1. 并发量定义与分类](#1. 并发量定义与分类)
      • [2. 并发量关键特性](#2. 并发量关键特性)
    • 二、并发量测试的核心价值
      • [1. 业务意义三角模型](#1. 业务意义三角模型)
      • [2. 实际工作场景应用](#2. 实际工作场景应用)
    • 三、并发量测试实战指南
      • [1. 测试工具配置要点](#1. 测试工具配置要点)
      • [2. 并发测试四步流程](#2. 并发测试四步流程)
      • [3. JMeter并发测试实操](#3. JMeter并发测试实操)
    • 四、并发瓶颈分析与优化
      • [1. 并发瓶颈定位矩阵](#1. 并发瓶颈定位矩阵)
      • [2. 常见并发问题解决方案](#2. 常见并发问题解决方案)
      • [3. 电商系统并发优化案例](#3. 电商系统并发优化案例)
    • 五、工作应用模板与工具
      • [1. 并发测试报告模板](#1. 并发测试报告模板)
      • [2. 生产环境并发监控方案](#2. 生产环境并发监控方案)
      • [3. Linux实时并发监控命令](#3. Linux实时并发监控命令)
    • 六、并发量设计黄金法则
      • [1. 并发用户估算公式](#1. 并发用户估算公式)
      • [2. 并发测试策略选择](#2. 并发测试策略选择)
      • [3. 并发测试检查清单](#3. 并发测试检查清单)

零基础学习性能测试:第一章 - 核心性能指标:并发量

本章核心目标:掌握并发量的本质定义、测量方法、与系统容量的关系,学会在实际工作中设计、执行并发测试并分析结果。

一、并发量核心概念解析

1. 并发量定义与分类

并发量 用户并发 请求并发 同时在线用户 同时操作用户 连接数 线程/协程数

类型 定义 关键指标 应用场景
用户并发 同时使用系统的用户数 在线用户数(Active Users) 系统容量规划
操作并发 同时执行业务操作的用户数 并发操作数(Concurrent Operations) 核心业务流程验证
连接并发 同时建立的网络连接数 TCP连接数 服务器资源分配
处理并发 系统同时处理的请求数 工作线程数(Worker Threads) 应用服务器调优

2. 并发量关键特性

特性 说明 工作应用
时间维度 同一时间段而非同一时刻 压测时需设置合理的Ramp-up时间
资源占用 每个并发消耗CPU/内存等资源 根据资源消耗计算服务器承载量
状态保持 需要会话(Session)维护 配置合理的Session过期时间
排队效应 当并发超过系统能力时出现排队 监控等待队列长度

二、并发量测试的核心价值

1. 业务意义三角模型

系统稳定性 确定崩溃点 用户体验 保障响应时间 成本控制 精确资源配置

2. 实际工作场景应用

场景 并发量测试目标 工作成果
新系统上线 验证1000并发用户稳定性 容量评估报告
大促活动准备 测试5000并发支付能力 扩容方案建议书
架构优化验证 对比优化前后并发能力 性能优化ROI分析
故障复盘 重现线上高并发故障场景 根本原因分析报告

工作模板 :并发测试计划
登录系统并发测试计划

  1. 测试目标:验证2000并发登录能力
  2. 并发策略:
    • 阶梯增加:500→1000→1500→2000用户
    • 每阶段持续10分钟
  3. 通过标准:
    • 错误率<0.5%
    • P95响应时间<2秒
    • 无系统崩溃

三、并发量测试实战指南

1. 测试工具配置要点

工具 并发配置项 关键参数说明
JMeter 线程组(Thread Group) 线程数=并发用户数
Ramp-up时间 控制用户启动速度
LoadRunner Virtual User Generator Vuser数量=并发用户数
Ramp Up/Down 设置递增/递减策略
Locust User Count 并发的模拟用户数
Spawn Rate 每秒启动用户数

2. 并发测试四步流程

测试工具 被测系统 监控系统 1. 逐步增加并发用户 2. 实时反馈系统指标 3. 采集性能数据 4. 生成并发测试报告 测试工具 被测系统 监控系统

3. JMeter并发测试实操

步骤演示:

  1. 创建线程组

    xml 复制代码
    <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="并发测试">
      <intProp name="ThreadGroup.num_threads">1000</intProp>
      <intProp name="ThreadGroup.ramp_time">300</intProp> <!-- 5分钟启动所有用户 -->
    </ThreadGroup>
  2. 添加同步定时器(Synchronizing Timer)

    xml 复制代码
    <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="集合点">
      <intProp name="groupSize">100</intProp> <!-- 每100用户同时触发 -->
    </SyncTimer>
  3. 配置监听器收集数据

    • 聚合报告(Aggregate Report)
    • 响应时间图(Response Time Graph)

四、并发瓶颈分析与优化

1. 并发瓶颈定位矩阵

连接超时 线程阻塞 数据库锁 内存溢出 高并发失败 错误类型 网络/连接池瓶颈 线程池不足 SQL优化/分库分表 JVM调优/内存泄漏修复

2. 常见并发问题解决方案

问题现象 根本原因 优化方案 效果预期
连接拒绝(Connection refused) 服务器连接数满 增加最大连接数 立即解决连接问题
响应时间指数级增长 线程竞争资源 减少锁粒度/使用无锁数据结构 提升50%+吞吐量
数据库CPU 100% 锁竞争/SQL低效 优化查询/引入缓存 降低80%数据库负载
内存溢出(OOM) 内存泄漏/配置不合理 修复泄漏/增大堆内存 避免系统崩溃

3. 电商系统并发优化案例

  1. 初始问题

    • 500并发时订单失败率35%
    • 响应时间 > 15秒
  2. 瓶颈分析

    • 数据库连接池满(100/100)
    • 库存更新行锁竞争
    • 支付服务单点瓶颈
  3. 优化方案

    • 数据库连接池扩大至500
    • 库存扣减改用Redis原子操作
    • 支付服务增加节点并负载均衡
  4. 优化结果

    • 支持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%

结论与建议

  1. 系统安全并发为2000用户
  2. 3000并发时需优化:
    • 增加Redis缓存用户数据
    • 数据库查询添加索引
    • 增加2个应用节点

2. 生产环境并发监控方案

Prometheus + Grafana 看板配置

json 复制代码
{
  "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实时并发监控命令

bash 复制代码
# 查看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)
  • 中间件指标(线程池/连接池)

测试后分析

  • 绘制并发-响应时间曲线
  • 统计各并发级别错误率
  • 定位首个性能拐点

工作口诀
并发量测承载,分阶梯找拐点
瓶颈先查连接,再验线程资源
监控要做全面,优化要看瓶颈

掌握并发量指标将使你在工作中:

  1. 准确评估系统真实容量
  2. 预防高并发场景故障
  3. 制定科学的扩容策略
  4. 提升系统资源利用率
  5. 保障业务高峰稳定性
相关推荐
慕y2744 小时前
Java学习第五十八部分——设计模式
java·学习·设计模式
菜还不练就废了5 小时前
7.19-7.20 Java基础 | File类 I/O流学习笔记
java·笔记·学习
心平愈三千疾6 小时前
学习秒杀系统-页面优化技术
java·学习·面试
为什么名字不能重复呢?6 小时前
Day1||Vue指令学习
前端·vue.js·学习
明早你自己说6 小时前
学习寄存器——GPIO(二)学习BSRR BRR ODR寄存器的原子性和在HAL库的应用
单片机·嵌入式硬件·学习
xinzheng新政6 小时前
纸板制造学习2
学习·制造
试着6 小时前
零基础学习性能测试第一章-性能测试和功能测试的区别
功能测试·学习·零基础·性能测试
程序员JerrySUN7 小时前
Valgrind Memcheck 全解析教程:6个程序说明基础内存错误
android·java·linux·运维·开发语言·学习
菜一头包7 小时前
C++ STL中迭代器学习笔记
c++·笔记·学习