中间件性能测试实操全流程 + 标准指标(面试 / 工作直接套用)
一、通用性能测试流程(Redis/Kafka/RocketMQ/Nginx 通用)
- 环境准备隔离测试环境、固定配置(CPU / 内存 / 磁盘 / 网络)、关闭无关进程、监控大盘就绪(CPU、内存、磁盘 IO、网卡、GC、连接数)。
- 压测场景设计基准场景、峰值场景、长稳场景、故障场景、极限并发场景。
- 压测工具选型
- Redis:redis-benchmark、Lua 脚本、JMeter
- Kafka/RocketMQ:JMeter、Go 压测脚本、MQ 自带压测命令
- Nginx:ab、wrk、JMeter、Locust
- 梯度加压逐步加并发,找到拐点、瓶颈点、最大 TPS。
- 指标采集业务指标 + 服务器资源指标 + 中间件自身指标。
- 瓶颈定位看 CPU / 内存 / 磁盘 / 网络 / 连接数 / 队列积压,逐层排查。
- 出具报告基准性能、峰值性能、长稳稳定性、瓶颈点、优化建议。
二、各中间件性能测试实操 & 指标标准
1、Redis 性能测试
自带命令直接压测
bash
运行
# 100并发、10万请求、测set/get redis-benchmark -c 100 -n 100000 -t set,get核心达标指标
- QPS:常规单机8W~15W+
- 平均响应时间:< 1ms
- 资源:CPU 使用率<70%、无频繁内存换页
- 长稳:连续压测 2 小时,无超时、无连接陡降、内存平稳
测试重点
读写性能、大 Key 性能、批量操作、过期淘汰、集群分片性能、持久化 RDB/AOF 对性能损耗。
2、Kafka 性能测试
压测命令
bash
运行
# 生产者压测 kafka-producer-perf-test.sh --topic test_topic --num-records 1000000 --record-size 1024 --throughput -1 --producer-props bootstrap.servers=127.0.0.1:9092 # 消费者压测 kafka-consumer-perf-test.sh --bootstrap-server 127.0.0.1:9092 --topic test_topic --messages 1000000核心达标指标
- 单分区生产 TPS:3000~8000
- 多分区集群整体:10W+ TPS
- 消息延迟:正常链路<20ms
- 堆积:峰值过后可快速消费完,不持续堆积
- 资源:Broker CPU<75%,磁盘 IO 不打满
测试重点
分区数对并发影响、副本数性能损耗、消息大小(1K/10K/100K)、积压恢复、重启节点性能抖动。
3、RocketMQ 性能测试
核心达标指标
- 单机单 Broker TPS:5W~10W+
- 消息延迟:普通消息<10ms,延时消息精度达标
- 堆积能力:支持百万级消息堆积,消费恢复不丢不重
- 集群主从切换:切换期间无消息丢失、短暂抖动可接受
测试重点
普通 / 延时 / 事务消息性能、集群扩容性能、重试队列积压、死信队列吞吐。
4、Nginx 性能测试
wrk 压测命令
bash
运行
wrk -c 100 -t 4 -d 60s http://127.0.0.1:8080/test核心达标指标
- 静态页面:单机1W~3W QPS
- 反向代理接口:5000~15000 QPS
- 平均延迟:<50ms
- 并发连接:支持万级长连接不丢包
- 限流测试:达到阈值后精准限流、不雪崩
测试重点
负载均衡分发、限流阈值、SSL 性能损耗、动静分离、节点摘除 / 上线无影响。
三、性能测试必看监控指标(面试必问)
1、业务指标
TPS/QPS、平均响应时间、95/99 分位耗时、错误率、超时率。
2、服务器资源
CPU 使用率、内存使用率、磁盘 IO、网卡流量、TCP 连接数、TIME_WAIT 数量。
3、中间件独有指标
- Redis:Key 总数、内存占用、客户端连接、缓存命中率、淘汰 Key 数
- MQ:分区偏移量、消息堆积、生产 / 消费 TPS、副本同步延迟
- Nginx:活跃连接、请求成功率、转发耗时、限流命中数
四、面试万能话术:中间件性能瓶颈怎么排查?
- 先看错误率、超时率,排除业务 bug;
- 再看服务器CPU / 内存 / 磁盘 / 网卡,确认是否硬件瓶颈;
- 看中间件自身指标:连接数、队列积压、内存溢出、GC 频繁;
- 定位是参数配置问题(并发数、内存上限、分区数)还是架构问题(单节点瓶颈、无分片);
- 优化后梯度加压,复测指标回归达标。
