Перейти к содержимому
13 / 15

Consumer lag: как измерять отставание потребителя и что делать, когда оно растёт?

Лаг — это разница между последним оффсетом в партиции и оффсетом, зафиксированным группой. Мерить его надо в двух единицах: в сообщениях (сколько накопилось) и во времени (насколько старое сообщение мы сейчас обрабатываем) — второе понятнее бизнесу и не зависит от размера сообщений. Рост лага имеет всего несколько причин, и различать их нужно до попыток масштабирования. Всплеск на входе — временный, рассосётся сам, если пропускная способность потребителя выше среднего темпа. Потребитель стал медленнее — деградировала внешняя зависимость или база; добавление инстансов не поможет и часто ухудшит. Не хватает параллелизма — все партиции заняты, и число потребителей упёрлось в число партиций; помогает увеличение партиций (только вперёд) или обработка внутри партиции пулом. Перекос по партициям — лаг только в одной, значит горячий ключ. Отдельно смотрят на частые ребалансировки: они дают пилообразный лаг без роста нагрузки.

Consumer lag: как измерять отставание потребителя и что делать, когда оно растёт? | JScriptiser