在Aerospike中查找TTL 0的记录

时间:2016-09-02 12:54:07

标签: aerospike ttl

我的空气动力学集群达到了50%的磁盘使用率并开始逐出记录。 我怀疑我每天都不会向群集写那么多记录。我们有90天的TTL设置记录,命名空间的默认TTL是30天。

我担心的是,我假设我们有0 TTL的记录,这些记录没有被逐出,甚至没有被使用。 如何审核和查找具有0 TTL的记录(对象数),该记录应立即更改为默认TTL。

感谢。

2 个答案:

答案 0 :(得分:4)

一些事情:

Aerospike日志将告诉您有多少记录没有过期,在下一行中查找“0 v-t”记录的数量(在我的示例中,此处为0):

{ns-name} Records: 37118670, 0 0-vt, 0(377102877) expired, 185677(145304222) evicted, 0(0) set deletes, 0(0) set evicted. Evict ttls: 34560,38880,0.118. Waits: 0,0,8743. Total time: 45467 ms

这将很快为该命名空间的非过期记录的“比例”(因为您有紧邻它的记录总数)。

为了完全识别那些记录并可能设置过期记录,您必须扫描记录并更新它们...在java中有示例代码来扫描{{3上的集合(或命名空间) }}。但是,可能还有其他更优雅的解决方案,但它们仍然需要编写一些代码。

答案 1 :(得分:3)

您查找以下日志行:

2016年9月2日15:14:00 GMT:INFO(nsup):( thr_nsup.c:1114){test}记录:3725361,0 0-vt,0(0)到期,0(0)被驱逐,0 (0)设置删除。 Evict ttl:0。等待:0,0,0。总时间:765毫秒

这是名为'test'的命名空间上的命名空间管理程序,它表示有372561条记录,其中0表示0-vt或无效时间。

TTL是现在的时间和记录的无效时间之间的差值(当它将到期时),因此无效时间为0的记录是永不过期或被驱逐的记录。