【问题标题】:Aerospike cluster not clean available blocksAerospike 集群未清理可用块
【发布时间】:2016-05-25 12:42:06
【问题描述】:

我们在项目中使用 aerospike 并遇到了奇怪的问题。 我们有一个 3 节点集群,在某些节​​点重新启动后它停止工作。 所以,我们做测试来解释我们的问题

我们制作测试集群。 3 个节点,复制计数 = 2

这是我们的命名空间配置

namespace test{
replication-factor 2
memory-size 100M
high-water-memory-pct 90
high-water-disk-pct 90
stop-writes-pct 95
single-bin true
default-ttl 0
storage-engine device {
cold-start-empty true
file /tmp/test.dat
write-block-size 1M
}

我们写了100Mb的测试数据之后我们就有了这种情况

可用百分比约为 66%,磁盘使用率约为 34%

一切都好 :slight_smile:

但是我们停止了一个节点。迁移后,我们看到可用 pct = 49% 和磁盘使用率 50%

将节点返回到集群,迁移后我们看到磁盘使用率变为之前的 32%,但旧节点上的可用百分比保持在 49%

再停止节点一次

可用百分比 = 31%

当我们遇到这种情况时再重复一次 可用百分比 = 0%

我们的集群崩溃了,客户端得到 AerospikeException: Error Code 8: Server memory error

那么我们如何清理可用的 pct?

【问题讨论】:

  • 请问您可以在日志中使用 grep defrag-q 并发布结果吗?
  • 我相信你的命名空间对于默认的写后队列来说太小了。尝试在配置中将其设置为 0 并重复测试。
  • kporter 很可能成功了。默认的写入后队列为每台设备 256 x 1MB(写入块大小)。无法对后写队列中的块进行碎片整理。将它降低到 8 或一些小值应该会有所帮助。

标签: aerospike


【解决方案1】:

如果您的 defrag-q 为空(您可以通过 grepping 日志查看它是否是),那么问题很可能是您的命名空间小于您的写后队列。 post-write-queue 上的块不适合进行碎片整理,因此您会看到 avail-pct 呈下降趋势,没有碎片整理来回收空间。默认情况下,post-write-queue 是 256 个块,因此在您的情况下,这相当于 256Mb。如果您的命名空间小于该值,您将看到avail-pct 继续下降,直到您点击停止写入。您可以使用以下命令动态减小写入后队列的大小(即不需要重新启动),这里我建议 8 个块:

asinfo -v 'set-config:context=namespace;id=<NAMESPACE>;post-write-queue=8'

如果您对这个值感到满意,您应该修改您的aerospike.conf 以包含它,以便它在节点重新启动后仍然存在。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多