[英]Expiring the messages in Kafka Topic
我们在我们的开发环境中使用 Apache Kafka 执行负载测试。
在我们安装了 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
在运行该过程几个小时后,由于空间限制,代理将关闭。
我可以从主题以及代理的角度尝试哪些其他选项,以使消息可靠地过期并收回磁盘空间以进行长时间运行的负载测试。
除了时间之外,您还可以根据字节大小定义删除策略。
主题配置称为retention.bytes ,在文档中描述为:
如果我们使用“删除”保留策略,此配置控制分区(由日志段组成)在我们丢弃旧日志段以释放空间之前可以增长到的最大大小。 默认情况下没有大小限制,只有时间限制。 由于此限制是在分区级别强制执行的,因此将其乘以分区数以计算主题保留(以字节为单位)。
您可以将它与retention.ms
一起设置,无论首先达到什么限制(字节或时间),都会触发清理。
这可能是因为您的日志清理线程可能尚未触发。
您没有提供太多关于这些主题积累了多少数据的信息。 但它可能不在 GB 中。
日志清理线程将清理已完成的日志段。 段的默认大小为 1 GB。
如果您期望巨大的负载,请将您的主题配置 segment.bytes 修改为较小的值。
或根据您的要求将配置 segment.ms 修改为 1 分钟或 10 分钟。
这应该会创建段,并根据您的日志保留时间,清理线程将清理较旧的已完成段。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.