好吧,因为我没有 10 次重复,所以我无法发布图片,但我会尝试用文字解释。
我有一个带有 4 个存储桶的 7 节点 Couchbase(社区)集群。最近,我收到了其中一个桶的元数据开销警告的垃圾邮件(不断)。警告弹出,如下所示:
元数据开销警告。分配给节点“xxx”上的桶 XXXX 的 RAM 的 62% 以上被键和元数据占用。
而且我读到这通常表明桶需要更多的内存。但我不认为那是我的问题。我猜我只是有很多元数据。当我查看Data Buckets选项卡时,这个 Bucket 有RAM/Quota Usage 64GB/75GB。所以对我来说,看起来大约有 11GB(75-64GB)可用。

如果我查看 Bucket Analytics VBUCKET RESOURCES指标,我会发现RAM中有59GB 用户数据,RAM 中有46GB 元数据。所以据我所知,在一个总共有 75GB 的存储桶上应该有 105GB 的 RAM!?!
但这对我来说并没有那么明显,这里有一些我不明白的东西。是的,75GB 中的 46GB 大约是 62%。但是,应该在 RAM 中的 59GB 用户数据呢?

编辑:典型的文档可能如下所示:
ID=1:CAESEA---rldZ5PhdV4msSdEchI
CONTENT=z2TjZEzkZ84=
Run Code Online (Sandbox Code Playgroud)
还有我的问题。我该怎么办?这种情况在我的情况下是否可以接受。如果是这样,我是否更改该警告的阈值(我不建议阅读该阈值,因为出于某种原因将警告设置为 50%)。
或者我分配更多的内存?如果是这样,如果已经有 11GB 可用空间,这对我有什么帮助?
请帮我澄清这些数字,并建议我是否需要采取任何行动。
我正在为厨师10编写一个LWRP.当该资源在其他配方中运行时,如果某些内容发生了变化,则应将其标记为"updated_by_last_action".但如果没有任何改变.updated_by_last_action应为false.
例如,我有厨师文档http://docs.opscode.com/lwrp_custom_provider.html#updated-by-last-action.该示例将资源模板包装在变量中以测试它是否已更改,然后设置updated_by_last_action状态.所以我的代码看起来应该是这样的
f = file new_resource.filename do
xxx
end
new_resource.updated_by_last_action(f.updated_by_last_action?)
t = template new_resource.templatename do
xxx
end
new_resource.updated_by_last_action(t.updated_by_last_action?)
m mount new_resource.mountpoint do
xxx
end
new_resource.updated_by_last_action(m.updated_by_last_action?)
Run Code Online (Sandbox Code Playgroud)
但是如果一个提供者变得更大并且使用了很多资源,比如模板,文件,目录,mount等等.应该将所有这些资源包装在像示例这样的变量中,以找出资源是否已经更新,以便进一步发送此提供程序已更新的状态.
我想知道是否有一种更简单,更清晰的方式来运行new_resource.updated_by_last_action(true)其他,然后将所有资源包装在变量中.因为如果我在每次厨师运行时将LWRP标记为更新之前放入new_resource.updated_by_last_action(true)内部,这不是最佳选择.actionend