Примечание: я в курсе, что есть много похожих вопросов, уже смотрел на них, не помогло.
Я запускаю тестовый тест 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.