我们正在 openshift 集群中使用 kafka 运行 strimzi。
我们有多个主题,所有主题都具有相同的
retention.ms
设置:259200000,即 72 小时。为了检查空间的使用位置,我们执行到其中一个 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
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
关于在哪里检查以找出根本原因有什么想法吗?
原因是发送消息的客户端的时间戳不正确,设置为未来 2024 年 12 月 6 日。
Kafka 使用此客户端时间戳作为所有消息的时间戳,因此 3 天的保留期将从 2024-12-06 后 3 天开始。
我们添加了
retention.bytes
以及缓解措施,直到管理客户的人员能够解决该问题为止。