在 Aerospike 中查找 TTL 为 0 的记录
Find records with TTL 0 in Aerospike
我的 aerospike 集群达到 50% 的磁盘使用率并且开始清除记录。
我怀疑我不会每天将那么多记录写入 cluster.Per 记录,我们设置了 90 天 TTL,命名空间的默认 TTL 是 30 天。
我担心的是,我假设我们有 TTL 为 0 的记录,这些记录没有被驱逐,甚至没有被使用。
如何审核和查找 TTL 为 0 的记录(对象数),应立即将其更改为默认 TTL。
谢谢。
您查找以下日志行:
2016 年 9 月 2 日 15:14:00 GMT:INFO (nsup):(thr_nsup.c:1114) {test} 记录:3725361、0 0-vt、0(0) 已过期、0(0 ) 逐出,0(0) 集删除。逐出 ttl:0。等待:0,0,0。总时间:765 毫秒
这是命名空间主管报告一个名为 'test' 的命名空间,它说有 372561 条记录,其中有 0 条带有 0-vt 或无效时间。
TTL 是现在时间和记录的无效时间(何时过期)之间的增量,因此无效时间为 0 的记录永远不会过期或被驱逐。
两件事:
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
这将很快达到该命名空间的 'proportion' 个非过期记录(因为它旁边有记录总数)。
为了完全识别这些记录是哪些记录并可能设置过期时间,您必须扫描记录并更新它们...java 中有示例代码可以扫描一组(或一组) this repo 上的命名空间)。虽然可能还有其他更优雅的解决方案,但它们仍然需要编写一些代码。
我的 aerospike 集群达到 50% 的磁盘使用率并且开始清除记录。 我怀疑我不会每天将那么多记录写入 cluster.Per 记录,我们设置了 90 天 TTL,命名空间的默认 TTL 是 30 天。
我担心的是,我假设我们有 TTL 为 0 的记录,这些记录没有被驱逐,甚至没有被使用。 如何审核和查找 TTL 为 0 的记录(对象数),应立即将其更改为默认 TTL。
谢谢。
您查找以下日志行:
2016 年 9 月 2 日 15:14:00 GMT:INFO (nsup):(thr_nsup.c:1114) {test} 记录:3725361、0 0-vt、0(0) 已过期、0(0 ) 逐出,0(0) 集删除。逐出 ttl:0。等待:0,0,0。总时间:765 毫秒
这是命名空间主管报告一个名为 'test' 的命名空间,它说有 372561 条记录,其中有 0 条带有 0-vt 或无效时间。
TTL 是现在时间和记录的无效时间(何时过期)之间的增量,因此无效时间为 0 的记录永远不会过期或被驱逐。
两件事:
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
这将很快达到该命名空间的 'proportion' 个非过期记录(因为它旁边有记录总数)。
为了完全识别这些记录是哪些记录并可能设置过期时间,您必须扫描记录并更新它们...java 中有示例代码可以扫描一组(或一组) this repo 上的命名空间)。虽然可能还有其他更优雅的解决方案,但它们仍然需要编写一些代码。