我如何知道为什么我的 Riak 集群没有按照我预期的那样在机器上运行压缩阶段?

我如何知道为什么我的 Riak 集群没有按照我预期的那样在机器上运行压缩阶段?

我有一组 Riak (V1.2.0) 机器,每台机器大约有 50Gb 的硬盘空间。我们按以下方式配置 bitcask 存储:

%% Bitcask Config
{bitcask, [
         {data_root, "/var/lib/riak/bitcask"},
         {frag_merge_trigger, 40}, %% trigger merge if framentation is > 40% default is 60%
         {dead_bytes_merge_trigger, 67108864}, %% trigger if dead bytes for keys > 64MB default is 512MB
         {frag_threshold, 20}, %% framentation >= 20% default is 40
         {dead_bytes_threshold, 67108864} %% trigger if dead bytes for data > 64MB default is 128MB
       ]},

我们的软件有一种模式,即用相同的密钥频繁重写值。即密钥集保持相对稳定,而值每天至少更改一次。

我们看到的规律是,可用磁盘空间每天都在减少,直到这些机器上的其他服务因空间不足错误而停止运行。有时重新启动机器会回收一些空间。

我的配置有问题吗?我不太清楚如何设置才能“自动”回收空间,以免在一周内耗尽磁盘空间。

我该如何检查?

  • 压缩算法何时确定是否运行以及基于什么标准来决定?
  • 压缩实际上是如何运行的
  • 回收了多少空间

答案1

在 bitcask 配置中添加一行

{log_needs_merge, true}

每当发生合并时,console.log 文件中都会有一个条目,显示哪些文件满足了哪些触发器

相关内容