APPLICATION & LOAD

Kiểm thử tải Apache Kafka: throughput, consumer lag và độ bền dữ liệu

31/7/2026 · 16 phút

Producer gửi message vào cụm Kafka ba broker và nhiều consumer group nhận dữ liệu
Mục lục bài viết 9 phần

Kafka có thể đạt producer throughput cao nhưng consumer lag tăng liên tục, tail latency xấu hoặc mất availability khi broker lỗi. Test plan đúng phải khóa message profile, partitioning, acknowledgment, replication, consumer behavior và điều kiện storage trước khi so sánh kết quả.

ĐỌC NHANH

Bài viết giúp bạn

  • Câu hỏi cần trả lời trước benchmark
  • Topology và điều kiện đo
  • Workload và biến số phải khóa
Tùy chỉnh đọc
01

Câu hỏi cần trả lời trước benchmark

#

Tách mục tiêu thành capacity, latency, durability và recovery. “Kafka xử lý bao nhiêu message/s?” chưa đủ vì cùng một message rate có byte rate, compression cost, partition distribution và acknowledgment khác nhau. Mức nhanh nhất với `acks=0` không đại diện hệ thống yêu cầu xác nhận ghi bền.

Xác định SLO: producer success rate; p50/p95/p99 produce latency; end-to-end latency; consumer lag; data correctness; recovery time và mức resource tối đa. Ghi rõ hệ thống ưu tiên throughput hay tail latency, và có được phép backlog tạm thời trong burst hay không.

Apache Kafka là nền tảng event streaming; producer ghi event vào topic và consumer đọc theo group. Partition tạo song song nhưng cũng là đơn vị ordering. Tăng partition có thể tăng capacity, đồng thời tăng metadata, file handle, leader movement và thời gian rebalance.

02

Topology và điều kiện đo

#

Topology tối thiểu gồm producer load generators, cụm broker, storage, metadata/controller theo phiên bản Kafka và consumer group. Tách management/metrics traffic khỏi test traffic. Đặt generator đủ gần để không biến WAN thành bottleneck, trừ khi mục tiêu là Kafka liên vùng.

Khóa phiên bản Kafka, Java/runtime, client library, broker count, CPU/RAM, disk type, filesystem, network, partition count, replication factor, min in-sync replicas và retention. Thu broker/client metrics, OS CPU, memory, GC, disk latency/IOPS, network, page cache và controller event.

Topology kiểm thử tải Apache Kafka với điểm đo producer, broker và consumer
Topology kiểm thử tải Apache Kafka với điểm đo producer, broker và consumer
03

Workload và biến số phải khóa

#

Message profile gồm payload size distribution, key cardinality, serialization, compression, batch size, linger, concurrency và arrival model. Payload toàn ký tự lặp lại tạo compression ratio không thực tế. Dùng dataset có entropy gần production hoặc báo rõ synthetic profile.

Key quyết định partition. Một hot key có thể dồn traffic vào một partition trong khi tổng cluster còn dư. Chạy cả uniform key, Zipf/skewed key và keyless/round-robin phù hợp client. Consumer phải có processing delay đại diện; consumer “đọc rồi bỏ” chỉ đo transport, không đo pipeline ứng dụng.

  • Biến: Message size · Profile tối thiểu: Nhỏ, trung bình, lớn, mixed · Lý do: Phân biệt msg/s và MB/s
  • Biến: Key distribution · Profile tối thiểu: Uniform, skewed, hot key · Lý do: Tìm partition imbalance
  • Biến: Producer · Profile tối thiểu: Sync/async, batch, compression · Lý do: Khóa latency/CPU trade-off
  • Biến: Acknowledgment · Profile tối thiểu: Theo durability policy · Lý do: Không so khác cam kết
  • Biến: Partition · Profile tối thiểu: Nhiều mức scale · Lý do: Tìm điểm bão hòa
  • Biến: Consumer · Profile tối thiểu: Fast, realistic, slow · Lý do: Đo lag/backpressure
  • Biến: Arrival · Profile tối thiểu: Steady, step, burst · Lý do: Đo queue và recovery
04

KPI và bằng chứng

#

Producer KPI gồm offered/accepted rate, successful records, retry/error, request latency và record queue time. Broker KPI gồm bytes/messages in/out, request queue, replication lag, under-replicated/offline partition, disk latency và network saturation. Consumer KPI gồm records/s, fetch latency, lag từng partition và rebalance time.

End-to-end latency cần timestamp tại producer và consumer trên clock đã đồng bộ hoặc dùng correlation logic không phụ thuộc clock. Đo từ lúc event được ứng dụng chấp nhận tới lúc consumer hoàn tất bước định nghĩa, không trộn broker latency với business processing latency.

Data correctness cần đếm unique event ID, missing, duplicate và ordering violation trong phạm vi partition. “At-least-once” có thể tạo duplicate; đó không tự động là mất đúng đắn nếu application có idempotency. Pass/fail phải gắn semantics thực tế.

05

Ma trận test theo tải và độ bền

#

Không chạy mọi biến cùng lúc. Baseline từng lớp trước, sau đó thêm compression, replication và failure. Khi so cấu hình, giữ dataset, seed, topic state và thời gian warm-up giống nhau.

  • Test: Baseline · Tải: 10–20% target · Thay đổi: Không failure · KPI chính: Latency, zero error
  • Test: Step load · Tải: Tăng theo bậc · Thay đổi: Giữ config · KPI chính: Knee point, p99
  • Test: Soak · Tải: 70–80% target · Thay đổi: Nhiều giờ · KPI chính: Lag, disk, GC
  • Test: Burst · Tải: > target ngắn hạn · Thay đổi: Burst duration · KPI chính: Backlog/recovery
  • Test: Partition skew · Tải: Target · Thay đổi: Hot keys · KPI chính: Max partition lag
  • Test: Consumer slow · Tải: Producer giữ nguyên · Thay đổi: Processing delay · KPI chính: Lag growth
  • Test: Broker failure · Tải: Target · Thay đổi: Stop leader broker · KPI chính: Error/recovery
  • Test: Storage pressure · Tải: Target · Thay đổi: Giới hạn IOPS có kiểm soát · KPI chính: Queue, latency
06

Failure, rebalance và backpressure

#

Mô phỏng broker restart, leader loss, network partition có kiểm soát và consumer join/leave. Đo thời gian producer error/retry, leader election, consumer pause, lag peak và thời gian trở về baseline. Không chỉ ghi “dịch vụ vẫn chạy”.

Consumer rebalance có thể tạo khoảng dừng và thay đổi partition ownership. Chạy rolling deployment với group scale thực tế; thu assignment timeline và duplicate/missing ID. Với static membership hoặc cooperative rebalancing, chỉ kết luận theo client/version đã thử.

Backpressure được nhìn qua producer queue, request timeout, consumer lag và application retry. Retry không giới hạn có thể biến slowdown thành retry storm. Test cần ngưỡng dừng để tránh làm đầy disk hoặc ảnh hưởng hệ thống ngoài phạm vi.

Timeline Kafka broker failure và consumer lag recovery
Timeline Kafka broker failure và consumer lag recovery
07

Runbook thực hành

#

Pass/fail mẫu gồm: accepted rate đạt target; p99 dưới SLO; producer error trong ngưỡng; lag không tăng vô hạn ở steady state; backlog sau burst được xử lý trong thời gian quy định; không missing event ngoài semantics; recovery sau broker failure dưới SLA.

  • 1. Ghi phiên bản broker/client và toàn bộ cấu hình liên quan.
  • 2. Xác minh clock, network và storage baseline.
  • 3. Tạo topic/partition/replication theo production.
  • 4. Nạp dataset và chạy warm-up.
  • 5. Chạy tải thấp xác nhận correctness.
  • 6. Tăng theo bậc, giữ mỗi mức đủ lâu.
  • 7. Chạy soak và burst.
  • 8. Tạo hot key, slow consumer và rebalance.
  • 9. Lỗi từng broker/network/storage theo ma trận.
  • 10. Đối chiếu ID, metric, log và cấu hình.
08

Phân tích bottleneck

#

Producer CPU cao và broker nhàn: xem serialization, compression, batching và client concurrency. Broker network đầy: so bytes in/out và replication overhead. Disk latency tăng cùng request queue: kiểm tra storage trước khi tăng partition hoặc thread.

Một partition lag cao trong khi các partition khác thấp thường là skew hoặc consumer task chậm. Tất cả partition lag cùng tăng có thể do consumer capacity, downstream dependency hoặc broker fetch. Correlate bằng timestamp thay vì suy đoán từ dashboard tổng.

Nếu p99 xấu nhưng average tốt, tìm GC pause, page-cache miss, batch flush, leader change và queue. Thử lặp trên trạng thái cache lạnh/ấm và ghi rõ điều kiện.

09

Giới hạn của kết luận

#

Benchmark phụ thuộc phiên bản Kafka, client, JVM, phần cứng, cloud instance, storage và dataset. Kết quả msg/s với payload nhỏ không quy đổi trực tiếp sang workload payload lớn hoặc exactly-once pipeline.

Tool producer/consumer đơn giản không đại diện schema registry, stream processing, database sink hay transaction nghiệp vụ. Dùng test broker để khoanh capacity, sau đó chạy end-to-end pipeline để nghiệm thu SLO.

THUẬT NGỮ NHANH

Khái niệm cần nhớ

DUT / SUT
Thiết bị hoặc toàn bộ hệ thống đang là đối tượng của bài kiểm thử.
Steady state
Giai đoạn tải đã ổn định và đủ điều kiện để lấy số liệu đại diện.
Pass / fail
Kết luận dựa trên ngưỡng đã thống nhất, luôn đi cùng topology, cấu hình và điều kiện đo.
TÀI LIỆU ĐỐI CHIẾUTài liệu tham khảo5 nguồn

Nội dung được biên soạn độc lập, theo hướng vendor-neutral và đối chiếu các tài liệu gốc dưới đây. Tính năng sản phẩm cần được kiểm tra lại theo phiên bản đang sử dụng.

Nguyên tắc biên tập

NetVali ưu tiên nguồn tiêu chuẩn và tài liệu chính thức; phân biệt khuyến nghị triển khai với yêu cầu của tiêu chuẩn; không công bố thông số sản phẩm chưa gắn với phiên bản và điều kiện đo.

Thông số và khả năng sản phẩm có thể thay đổi theo phiên bản. Hãy đối chiếu tài liệu chính thức trước khi xây dựng cấu hình hoặc tiêu chí nghiệm thu.
BẮT ĐẦU TỪ BÀI TOÁN

Cần chuyển kiến thức thành test plan?

Chia sẻ mục tiêu, topology và ràng buộc kỹ thuật. NetVali sẽ cùng bạn xác định bài đo phù hợp.

Trao đổi yêu cầu kỹ thuật