【问题标题】:Find records with TTL 0 in Aerospike在 Aerospike 中查找 TTL 为 0 的记录
【发布时间】:2017-01-10 14:28:29
【问题描述】:

我的 aerospike 集群达到 50% 的磁盘使用率并且记录开始驱逐。 我怀疑我每天不会向集群写入那么多记录。每条记录我们设置了 90 天的 TTL,命名空间的默认 TTL 是 30 天。

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

谢谢。

【问题讨论】:

  • 您是否正在寻找可以执行此操作的脚本?

标签: aerospike ttl


【解决方案1】:

您查找以下日志行:

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

这是命名空间主管报告名为“test”的命名空间,它表示有 372561 条记录,其中有 0 条记录为 0-vt 或无效时间。

TTL 是现在时间与记录的无效时间(何时到期)之间的增量,因此无效时间为 0 的记录是永远不会过期或被驱逐的记录。

【讨论】:

    【解决方案2】:

    几件事:

    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中有示例代码来扫描this repo上的集合(或命名空间) .不过,可能还有其他更优雅的解决方案,但它们仍然需要编写一些代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      相关资源
      最近更新 更多