我有一组 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 文件中都会有一个条目,显示哪些文件满足了哪些触发器