Как масштабировать max.incremental.fetch.session.cache.slots - PullRequest
2 голосов
/ 18 июня 2020

Я использую довольно большой кластер Kafka, но в настоящее время я застрял в правильной настройке max.incremental.fetch.session.cache.slots, и мне потребуются некоторые рекомендации. Документация по этому поводу тоже не ясна: https://cwiki.apache.org/confluence/display/KAFKA/KIP-227%3A+Introduce+Incremental+FetchRequests+to+Increase+Partition+Scalability

По масштабу я имею в виду: 3 узла, ~ 400 тем, 4500 разделов, 300 групп потребителей, 500 потребителей

Некоторое время я вижу ошибки FETCH_SESSION_ID_NOT_FOUND в журналах и хочу их исправить.

Итак, я попытался увеличить значение в конфигурации, перезапустил всех брокеров, и пул быстро заполнился снова до максимальной емкости. Это уменьшило количество ошибок, но они не исчезли полностью. Сначала я установил значение 2000, он был мгновенно заполнен. Затем в несколько шагов до 100000. И пул был заполнен за ~ 40 минут.

Судя по документации, я ожидал, что пул закроется через 2 минуты, когда сработает min.incremental.fetch.session.eviction.ms. Но это, похоже, не так.

Какие будут метрики для определения подходящего размера кеша. Я все еще вижу ошибки, которые я могу исправить на брокерах, или мне нужно выследить неправильно настроенных потребителей? Если да, то на что мне нужно обратить внимание?

1 Ответ

1 голос
/ 30 июня 2020

Такое частое использование сеансов Fetch, скорее всего, вызвано плохим клиентом.

Sarama , клиент Golang, имел проблему, из-за которой был выделяется для каждого запроса Fetch между версиями 1.26.0 и 1.26.2, см. https://github.com/Shopify/sarama/pull/1644.

Я бы рекомендовал проверить, есть ли у вас пользователи, использующие этот клиент, и убедиться, что они обновляются до последняя версия.

...