Kafka主题中的消息过期

m2xkgtsf  于 2021-06-05  发布在  Kafka
关注(0)|答案(2)|浏览(538)

我们在开发环境中使用apachekafka执行负载测试。
在我们安装了confluent kafka的linux系统中,空间有限,因此要执行负载测试,我们在主题中添加了retention.ms属性。
这样做的目的是在消费者消费完信息后,将其从主题中删除。
我试过了

kafka-topics --zookeeper localhost:2181 --alter --topic myTopic --config retention.ms=10000

它没有工作,因此我们重新创建了主题,并尝试下面的选项。

kafka-configs --alter --zookeeper localhost:2181 --entity-type topics --entity-name myTopic -add-config retention.ms=10000

在运行进程几个小时后,代理将由于空间限制而关闭。
从主题和代理的Angular 来看,我还可以尝试哪些其他选项来可靠地使消息过期,并为长时间运行的负载测试收回磁盘空间。

xvw2m8pv

xvw2m8pv1#

除了时间之外,还可以根据字节大小定义删除策略。
主题配置称为retention.bytes,在文档中描述为:
如果使用“删除”保留策略,此配置控制分区(由日志段组成)在丢弃旧日志段以释放空间之前可以增长到的最大大小。默认情况下,没有大小限制,只有时间限制。由于此限制是在分区级别强制执行的,因此将其乘以分区数以字节为单位计算主题保留。
你可以把它和 retention.ms 无论首先达到什么限制(字节或时间),都会触发清理。

svmlkihl

svmlkihl2#

这可能是因为日志清理器线程可能没有触发。
您没有提供关于这些主题累积了多少数据的详细信息。但可能不是gb的。
日志清理器线程将在已完成的日志段上进行清理。段的默认大小为1 gb。
如果您希望负载过大,请将topic configuration segment.bytes修改为较小的值。
或根据您的要求将configuration segment.ms修改为1分钟或10分钟。
这将创建段,并基于日志保留时间,更干净的线程将清理较旧的已完成段。

相关问题