retention.ms 不受特定 kafka 主题的尊重

问题描述 投票:0回答:1

我们正在 openshift 集群中使用 kafka 运行 strimzi。
我们有多个主题,所有主题都具有相同的

retention.ms
设置:259200000,即 72 小时。
我们观察到 kafka 磁盘空间随着时间的推移一直在减少。

为了检查空间的使用位置,我们执行到其中一个 kafka pod,然后运行:

du -sh /var/lib/kafka/data/kafka-log0/* | sort -hr

这产生了以下输出

bash-4.4$ du -sh /var/lib/kafka/data/kafka-log0/* | sort -hr
149G    /var/lib/kafka/data/kafka-log0/mytopic1-0
29G     /var/lib/kafka/data/kafka-log0/mytopic2-0
3.6G    /var/lib/kafka/data/kafka-log0/mytopic3-0
681M    /var/lib/kafka/data/kafka-log0/mytopic4-security-0

查看

/var/lib/kafka/data/kafka-log0/mytopic1-0
发现最早有3月28日的数据,已经是一个多月前的数据了。 保留时间设置为 72 小时。

total 155550304
-rw-rw-r--. 1 1000760000 1000760000       6328 Mar 28 10:17 00000000001211051718.index
-rw-rw-r--. 1 1000760000 1000760000   12339043 Mar 28 10:17 00000000001211051718.log
-rw-rw-r--. 1 1000760000 1000760000       1164 Mar 28 10:17 00000000001211051718.timeindex

对于具有相同保留设置的其他主题,文件夹中的数据与保留设置一致。 今天早上检查了最旧的文件后,旧文件没有发生任何变化。因此,对于这个特定主题,似乎没有删除旧文件。

Kubernetes: OpenShift
Kafka image: kafka:0.35.1-kafka-3.4.0
Kafka version: 3.4.0
Strimzi version: 0.35.1

KafkaTopic - 有问题的主题

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
  annotations:
  labels:
    app.kubernetes.io/instance: kafka
    strimzi.io/cluster: kafka
  name: mytopic1
  namespace: kafka-ns
  resourceVersion: "162114882"
  uid: 266caad6-c73d-4a23-9913-6c9a64f505ca
spec:
  config:
    retention.ms: 259200000
    segment.bytes: 1073741824
  partitions: 1
  replicas: 3
status:
  conditions:
  - lastTransitionTime: "2023-10-27T09:03:58.698836682Z"
    status: "True"
    type: Ready
  observedGeneration: 2
  topicName: mytopic1

另一个没有问题的卡夫卡主题

apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaTopic
metadata:
  labels:
    app.kubernetes.io/instance: kafka
    strimzi.io/cluster: kafka
  name: mytopic2
  namespace: kafka-ns
  resourceVersion: "162114874"
  uid: 871b5fab-7996-4674-a0b4-d3476cbe9c6c
spec:
  config:
    retention.ms: 259200000
    segment.bytes: 1073741824
  partitions: 1
  replicas: 3
status:
  conditions:
  - lastTransitionTime: "2023-10-27T09:03:58.539808920Z"
    status: "True"
    type: Ready
  observedGeneration: 2
  topicName: mytopic2

关于在哪里检查以找出根本原因有什么想法吗?

apache-kafka strimzi
1个回答
0
投票

原因是发送消息的客户端的时间戳不正确,设置为未来 2024 年 12 月 6 日。
Kafka 使用此客户端时间戳作为所有消息的时间戳,因此 3 天的保留期将从 2024-12-06 后 3 天开始。

我们添加了

retention.bytes
以及缓解措施,直到管理客户的人员能够解决该问题为止。

© www.soinside.com 2019 - 2024. All rights reserved.