1. 课程导论:性能基准测试的定义、连接池与消息队列在系统中的作用、本课程目标与实验环境概述
1.1 性能基准测试的定义与核心价值
性能基准测试(Performance Benchmark)是在受控环境下,通过标准化负载对系统进行可重复的测量,以获取关键性能指标(KPI)的过程。其核心目的是建立系统的“性能基线”,为后续优化提供量化依据。
| 维度 | 说明 | 典型指标 |
|---|---|---|
| 吞吐量 | 单位时间内系统处理的请求数 | TPS(每秒事务数)、QPS(每秒查询数) |
| 响应时间 | 从请求发出到收到完整响应的时间 | P50、P95、P99 延迟(毫秒) |
| 资源利用率 | CPU、内存、磁盘 I/O、网络带宽的占用比例 | CPU 使用率(%)、内存占用(MB) |
| 并发能力 | 系统在不降级的前提下能承载的最大并发连接数 | 最大活跃连接数、线程池大小 |
关键原则:基准测试必须保证“可重复性”——相同的负载、相同的环境、相同的测量方法,才能获得可信的对比结果。
1.2 连接池在系统中的作用
连接池(Connection Pool)是一种资源复用技术,用于管理数据库、消息队列、HTTP 服务等后端资源的连接生命周期。其核心作用包括:
- 减少连接建立开销:避免每次请求都经历 TCP 三次握手、认证、SSL 协商等耗时操作。
- 控制并发上限:通过池化限制最大连接数,防止后端服务被突发流量打垮。
- 复用与回收:空闲连接可被其他请求复用,异常连接由池自动检测并剔除。
- 性能稳定:预热后的连接池能提供稳定的低延迟响应。
常见连接池参数:最小空闲连接数、最大活跃连接数、连接超时时间、空闲回收间隔、最大等待时间。
1.3 消息队列在系统中的作用
消息队列(Message Queue, MQ)作为异步通信的核心组件,承担着解耦、削峰、缓冲、异步处理等职责。索引效率验证关注的是消息从生产到消费的完整链路性能。
- 解耦:生产者和消费者无需直接交互,降低系统耦合度。
- 削峰填谷:瞬时高流量消息暂存队列,下游按自身能力消费。
- 异步处理:非核心业务(如日志、通知)异步执行,提升主链路响应速度。
- 可靠投递:通过持久化、确认机制、重试策略保证消息不丢失。
索引效率瓶颈:消息队列的索引(如 RocketMQ 的 CommitLog 索引、Kafka 的偏移量索引)直接影响消息查询、回溯、重置消费位点的性能。索引设计不当会导致高延迟和磁盘 I/O 瓶颈。
1.4 连接池与消息队列的交互关系
在微服务架构中,连接池和消息队列往往协同工作。下图展示了典型的高并发系统中两者的位置与交互关系。
1.5 本课程目标
通过本课程的学习,你将能够:
- 掌握基准测试方法论:设计可重复、可对比的性能测试方案。
- 验证连接池配置影响:通过实验对比不同连接池参数(最大连接数、超时时间、空闲回收策略)对系统吞吐量和响应时间的影响。
- 评估消息队列索引效率:测试不同索引策略(如 RocketMQ 的索引文件大小、Kafka 的索引间隔)对消息查询和回溯性能的影响。
- 输出可落地的配置建议:基于实验数据,给出生产环境连接池和消息队列索引的推荐配置。
1.6 实验环境概述
本课程所有实验均在以下标准化环境中执行,确保结果的可复现性:
| 组件 | 配置 | 版本 |
|---|---|---|
| 操作系统 | CentOS 7.9 / Ubuntu 22.04 LTS | 内核 5.15+ |
| CPU | 4 vCPU (Intel Xeon Platinum 8255C) | 2.5 GHz |
| 内存 | 16 GB DDR4 | — |
| 磁盘 | NVMe SSD 500 GB | 顺序读写 3.5 GB/s |
| 数据库 | MySQL 8.0.32 | InnoDB 引擎 |
| 消息队列 | RocketMQ 5.1.0 / Kafka 3.5.0 | — |
| 压测工具 | JMeter 5.6.2 / wrk2 | — |
| 监控工具 | Prometheus + Grafana + Node Exporter | — |
实验拓扑说明:所有服务部署在同一台物理机上的 Docker 容器中,网络延迟控制在 0.1ms 以内,以消除网络抖动对测试结果的干扰。压测工具运行在独立宿主机上,通过千兆以太网连接。