【发布时间】: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的测试数据之后我们就有了这种情况
一切都好 :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