The catalog consumers kept rebalancing. Every rebalance paused the group, lag grew, and the answer had been to add pods. More pods meant more members joining and leaving, which meant more rebalancing. The cluster had grown to 200 pods and the lag was still there.
The root cause was consumers taking too long between polls and getting kicked out of the group, plus an out-of-memory crash that restarted pods mid-batch. I fixed the consumer, not the cluster:
# consumer, per topic partition.assignment.strategy = StickyAssignor # keep partitions on rebalance max.poll.interval.ms = ↑ raised # slow batches no longer evicted max.poll.records = ↓ lowered # smaller, predictable batches ackMode = RECORD concurrency = 1 thread per partition
- Fixed the OOM in the consumer service so pods stopped restarting mid-batch.
- Made consumption idempotent: a message already logged as processed is skipped, so retries are safe.
- Added a dead-letter topic and moved heavy scheduled topics into their own application mode, so they stopped loading the main consumer group.
Same traffic, 30 pods, lag back under control, including campaign days that jump from about 90,000 to 500,000 orders. Nobody gets paged for it any more.