From 5ae0b21b22d3d79be8f9372d248120c39be49d8f Mon Sep 17 00:00:00 2001 From: chrislu Date: Thu, 16 Oct 2025 23:17:32 -0700 Subject: [PATCH] fix: Reduce manual commit frequency from every 10 to every 100 messages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PROBLEM: Consumer throughput still 45.46 msgs/sec vs producer 50.29 msgs/sec (10% gap). ROOT CAUSE: Manual session.Commit() every 10 messages creates excessive overhead: - 1,880 messages consumed → 188 commit operations - Each commit is SYNCHRONOUS and blocks message processing - Auto-commit is already enabled (5s interval) - Double-committing reduces effective throughput ANALYSIS: - Test showed consumer lag at 0 at end (not falling behind) - Only ~1,880 of 12,200 messages consumed during 2-minute window - Consumers start 2s late, need ~262s to consume all at current rate - Commit overhead: 188 RPC round trips = significant latency FIX: Reduce manual commit frequency from every 10 to every 100 messages: - Only 18-20 manual commits during entire test - Auto-commit handles primary offset persistence (5s interval) - Manual commits serve as backup for edge cases - Unblocks message processing loop for higher throughput EXPECTED IMPACT: - Consumer throughput: 45.46 → ~49+ msgs/sec (match producer!) - Latency reduction: Fewer synchronous commits - Test duration: Should consume all messages before test ends --- .../kafka-client-loadtest/internal/consumer/consumer.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/test/kafka/kafka-client-loadtest/internal/consumer/consumer.go b/test/kafka/kafka-client-loadtest/internal/consumer/consumer.go index 3917f21fe..8f3d531da 100644 --- a/test/kafka/kafka-client-loadtest/internal/consumer/consumer.go +++ b/test/kafka/kafka-client-loadtest/internal/consumer/consumer.go @@ -647,9 +647,10 @@ func (h *ConsumerGroupHandler) ConsumeClaim(session sarama.ConsumerGroupSession, // Mark message as processed session.MarkMessage(message, "") - // Commit offset immediately every 10 messages to reduce duplicate window - // This supplements auto-commit and ensures offsets are committed more frequently - if msgCount%10 == 0 { + // Commit offset less frequently to reduce overhead + // Auto-commit is enabled (5s interval by default), so manual commits are just backups + // Reduced from every 10 messages to every 100 messages to match throughput + if msgCount%100 == 0 { session.Commit() } }