Consumer lag = offset mới nhất của partition (log end offset) trừ offset mà consumer group đã commit. Nó cho biết consumer đang chậm hơn producer bao nhiêu message.
Đo:
kafka-consumer-groups.sh --bootstrap-server localhost:9092 \
--describe --group order-workerCột LAG hiện theo từng partition. Trong hệ thống thật thì lấy metric qua Burrow / Kafka Exporter → Prometheus và cảnh báo theo xu hướng, không theo giá trị tuyệt đối: lag 10.000 mà đang giảm thì bình thường, lag 500 mà tăng đều mới đáng lo. Tốt hơn nữa là quy đổi sang thời gian trễ (lag ÷ tốc độ xử lý) vì đó là con số nghiệp vụ hiểu được.
Lag tăng liên tục — chẩn đoán theo thứ tự:
1. Lag chỉ dồn ở vài partition → key lệch hoặc consumer của partition đó chết. Không phải vấn đề công suất.
2. Lag đều trên mọi partition → consumer chậm hơn producer thật sự. Xem consumer đang chờ ở đâu: gọi API bên ngoài, query DB chậm, hay xử lý từng message một.
3. Rebalance liên tục → consumer bị đá ra vì xử lý một lô lâu hơn max.poll.interval.ms; giảm max.poll.records hoặc nới timeout.
Cách khắc phục theo hiệu quả giảm dần: tối ưu phần chậm nhất (batch DB write, bỏ N+1, gọi ngoài song song) → tăng số consumer trong group (chỉ có tác dụng tới khi bằng số partition) → tăng số partition rồi mới tăng consumer. Không có kênh ưu tiên thì lúc backlog lớn, message mới cũng phải xếp hàng sau toàn bộ backlog.