3. 压测基础概念:吞吐量、延迟、QPS、TPS、P99延迟、背压、消费者Lag

在开始Kafka链路压测与异常波动排查之前,必须建立一套统一的性能度量语言。本章将逐一拆解吞吐量、延迟、QPS、TPS、P99延迟、背压和消费者Lag这七个核心概念,并阐明它们在Kafka场景下的特殊含义与关联关系。

3.1 吞吐量(Throughput)

吞吐量是系统在单位时间内成功处理的数据量。在Kafka中,通常以MB/s(数据量)或records/s(消息条数)为单位。吞吐量反映的是系统的“搬运能力”,是压测中最直观的宏观指标。

维度 生产者端 消费者端 Broker端
单位 MB/s 或 records/s MB/s 或 records/s MB/s(网络/磁盘)
瓶颈点 网络带宽、序列化、acks配置 消费逻辑、网络带宽、分区数 磁盘IO、页缓存、网络线程
压测关注 最大发送速率 最大消费速率 集群总吞吐上限
实践提示: 压测时不要只看峰值吞吐量,要同时观察吞吐量是否稳定。Kafka的吞吐量曲线如果出现“锯齿状”波动,往往是背压或GC抖动的先兆。

3.2 延迟(Latency)

延迟是消息从生产者发送到消费者接收所经历的时间。在Kafka链路中,延迟可以细分为端到端延迟和单跳延迟。端到端延迟 = 生产者发送时间 + Broker存储时间 + 消费者拉取时间。

  • 生产者端延迟: 从send()调用到收到Broker确认的时间。
  • Broker端延迟: 消息写入Page Cache到刷盘、副本同步的时间。
  • 消费者端延迟: 从poll()到业务处理完成的时间。
关键认知: 吞吐量和延迟通常是跷跷板关系。当吞吐量逼近系统上限时,延迟会急剧上升。压测中如果发现延迟随吞吐量线性增长,说明系统处于健康状态;如果出现指数级增长,说明已经进入过载区。

3.3 QPS 与 TPS

QPS(Queries Per Second)和TPS(Transactions Per Second)是压测中最容易被混淆的两个概念。在Kafka场景下,它们的区别更加明显。

指标 定义 Kafka中的典型场景 压测关注点
QPS 每秒查询次数 消费者poll()请求、元数据请求、Offset查询 请求频率是否压垮Broker的请求队列
TPS 每秒事务数 生产者send() + 确认、Exactly-Once事务 事务协调器负载、事务超时率

在压测实践中,QPS更关注请求频率,TPS更关注完整业务单元。对于Kafka生产者压测,通常使用TPS来衡量消息发送的成功率;对于消费者压测,QPS更能反映poll()请求的密集程度。

3.4 P99延迟

P99延迟是指系统中99%的请求延迟都低于该值,只有1%的请求比它慢。相比平均延迟,P99能更真实地反映系统的尾部性能。

避坑指南: 很多压测报告只展示平均延迟,这非常危险。平均延迟可能只有10ms,但P99延迟可能已经达到500ms。在Kafka链路中,P99延迟的突然升高往往意味着:
  • Broker端Page Cache命中率下降
  • 消费者端GC暂停
  • 网络丢包重传
延迟分布对比:平均延迟 vs P99延迟 平均延迟 10ms (掩盖了尾部) P99延迟 500ms (真实尾部) P99 = 500ms 意味着1%的请求 超过500ms 必须优化

3.5 背压(Backpressure)

背压是系统中下游处理速度跟不上上游发送速度时,反向传递的压力信号。在Kafka链路中,背压主要出现在两个位置:

  1. 生产者 → Broker: 当Broker处理不过来时,生产者会收到重试或超时错误,发送速率被迫下降。
  2. Broker → 消费者: 当消费者消费太慢时,Broker端的消费组Lag会持续增长,但Broker不会主动限流,而是由消费者自己通过max.poll.records等参数控制。
压测中的背压信号:
  • 生产者端:buffer.memory 耗尽、max.block.ms 超时
  • 消费者端:poll() 间隔超过 max.poll.interval.ms,触发Rebalance
  • Broker端:网络线程池队列积压、请求超时率上升

3.6 消费者Lag

消费者Lag是Kafka特有的核心监控指标,表示消费者当前消费的Offset与分区最新Offset之间的差值。Lag直接反映了消费者是否跟得上生产者的写入速度。

Lag状态 含义 压测中的典型表现
Lag ≈ 0 消费者实时消费,无积压 系统处于平衡状态
Lag 缓慢增长 消费速度略低于生产速度 需要增加消费者实例或优化消费逻辑
Lag 急剧增长 消费者出现严重瓶颈或故障 消费者GC、网络中断、业务处理耗时飙升
Lag 波动剧烈 消费者处理能力不稳定 Rebalance频繁、资源争抢、背压抖动

3.7 概念关联:Kafka链路压测全景

下面这张SVG图展示了压测过程中七个核心概念在Kafka链路中的位置与关联关系,帮助你在后续章节中快速定位异常点。

Kafka链路压测核心概念全景 生产者 TPS / 吞吐量 Broker 吞吐量 / P99延迟 消费者 QPS / Lag 背压(Backpressure) 端到端延迟 生产者侧指标 • TPS:每秒事务数 • 吞吐量:MB/s • 发送延迟 Broker侧指标 • P99延迟:尾部性能 • 吞吐量上限 • 请求队列深度 消费者侧指标 • QPS:每秒查询 • Lag:消费积压 • 消费延迟
压测启动前的自查清单:
  • ✅ 是否明确了压测目标(吞吐量优先还是延迟优先)?
  • ✅ 是否同时采集了平均延迟和P99延迟?
  • ✅ 是否配置了消费者Lag的实时监控?
  • ✅ 是否设置了背压告警阈值(如生产者超时率 > 1%)?
  • ✅ 是否区分了QPS和TPS的压测场景?