couchbase元数据开销警告。密钥和元数据占用了62%的RAM

时间:2014-08-06 15:13:28

标签: couchbase nosql

好的,因为我没有10次复制我无法发布图片,但我会尝试用文字解释。

我有一个带有4个桶的7节点Couchbase(社区)群集。 最近我被其中一个桶的元数据开销警告(不断)收到垃圾邮件。 弹出警告,如下所示:

元数据开销警告。分配给节点“xxx”上的存储桶XXXX的超过62%的RAM由密钥和元数据占用。

而且我已经读过,这通常表明铲斗需要更多的撞锤。但对我来说,这不是问题。我只想拥有大量的元数据。 当我查看数据存储区标签时,此存储桶具有 RAM /配额使用 64GB / 75GB 。所以对我来说,它看起来有大约11GB(75-64GB)可用。 bucket overview

如果我查看Bucket Analytics VBUCKET资源指标,我发现RAM中有 59GB 用户数据 46GB < RAM中的/ em> 元数据。所以根据我的理解,在一个总共75GB的存储桶中应该有105GB的RAM!?!

但这并没有让我如此清楚,这里有一些我不明白的东西。 是的46GB的46GB是62%左右。但是据称在RAM中的59GB用户数据呢? Bucket Analytics

修改的: 典型文档可能如下所示:

ID=1:CAESEA---rldZ5PhdV4msSdEchI
CONTENT=z2TjZEzkZ84=

我的问题。我该怎么办?在我的情况下情况是否可以接受。如果是,我是否要更改该警告的阈值(由于某种原因警告设置为50%,因此不建议我阅读此警告。)

或者我分配更多内存?如果是这样的话,如果已经有11GB免费,这对我有什么帮助?

请帮我澄清这些数字,并建议我是否需要采取任何行动。

1 个答案:

答案 0 :(得分:4)

首先,元数据使用的内存百分比并不一定存在问题 - 这只意味着可用于缓存实际文档的内存较少。如果您的应用程序运行良好,那么对您的用例可能没问题。但是,我已经说过,让我尝试解决你的问题,如果你想要改进的话,该怎么改变:

  

如果我查看Bucket Analytics的VBUCKET资源指标,我发现RAM中有59GB用户数据,RAM中有46GB元数据。所以根据我的理解,在一个总共75GB的存储桶中应该有105GB的RAM!?!

IIRC&#34; RAM中的用户数据&#34;是包含的&#34; RAM中的元数据&#34; - 所以你总共使用了59 GB的数据,其中46 GB是元数据。

  

我的问题。我该怎么办?在我的情况下情况是否可以接受。如果是,我是否更改了该警告的阈值(由于某种原因警告设置为50%,因此不建议我阅读此警告)。   或者我分配更多的RAM?如果是这样的话,如果已经有11GB免费,这对我有什么帮助?

所以基本上你要存储大量非常小的文档,因此每个文档的元数据开销(~48个字节加上密钥的长度)与实际文档大小相比非常高。

11GB免费主要由桶配额和高水印之间的差异组成。

以下是一些改进措施:

  1. 为存储桶分配更多内存(如您所述) - 如果服务器配额中有任何未分配的内容。
  2. 向节点添加更多内存(并分配给服务器配额和存储桶)。
  3. 减少副本的数量(如果您可以接受的话) - 此时您基本上存储了每个对象(及其元数据)三次 - 一次用于活跃的vBuckets和两个副本vBucket集两次。
  4. 将文档更改为包含较短的密钥 - 这会减少每个文档的平均元数据。
  5. 将多个文档合并为一个 - 这将减少文档数量,从而减少整体元数据开销。