Назад | Перейти на главную страницу

Сохранение журнала Kafka не работает должным образом

Примечание: я в курсе, что есть много похожих вопросов, уже смотрел на них, не помогло.

Я запускаю тестовый тест kafka в закрытой среде, я дал каждому брокеру файловую систему размером 40 ГБ для сохранения журнала, и я быстро попадаю в ситуацию, в которой он дает сбой и не восстанавливается, потому что эта файловая система наполняется.

Итак, чтобы избежать такого катастрофического сбоя в производстве, я попытался установить log.retention.bytes=10737418240 (10 ГБ) и протестировал его, чтобы увидеть, удаляет ли kafka журналы до того, как достигнет ситуации, в которой он выйдет из строя

как показано на графике, kafka ничего не удалял после прохождения 10 ГБ (в других тестах он также достиг 40 и снова вылетал)

Вот мой весь файл server.properties:

# server settings
controlled.shutdown.enable=true
log.retention.bytes=10737418240
log.cleanup.policy=delete
log.segment.delete.delay.ms=10000
log.retention.check.interval.ms=1000
listeners=PLAINTEXT://:9092

zookeeper.connect=kafka-zookeeper:2181
zookeeper.session.timeout.ms=6000

# this must correlate to kafka's volume claim templates
log.dirs=/var/lib/kafka

# default settings for topics
auto.create.topics.enable=true
delete.topic.enable=true
num.partitions=10
offsets.topic.replication.factor=2
transaction.state.log.replication.factor=2
transaction.state.log.min.isr=2
default.replication.factor=2
# 6291456 / 1024 / 1024 = 6Mb
replica.fetch.max.bytes=6291456
# 5242880 / 1024 / 1024 = 5Mb
message.max.bytes=5242880
group.initial.rebalance.delay.ms=3000

Что мне не хватает?

Поскольку это ограничение применяется на уровне разделов, умножьте его на количество разделов, чтобы вычислить сохранение темы в байтах.

Свойство сервера по умолчанию: log.retention.bytes

- говорит документация около retention.bytes.

При условии, что вы используете конфигурацию по умолчанию при создании тем и создаете N темы во время теста производительности, и вы запускаете кластер M здоровые узлы брокера, мы можем примерно оцените размер журналов разделов, которые могут вырасти до одного узла-посредника, прежде чем очиститель журналов начнет отбрасывать старые сегменты журнала:

log.retention.bytes × num.partitions × N × default.replication.factor / М,

что в вашей конфигурации приводит к большему размеру, чем размер вашей файловой системы:

10 ГБ × 10 × N × 2 / M.