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

Rab*_*boo 4 nosql couchbase

好吧,因为我没有 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 可用空间,这对我有什么帮助?

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

Dav*_*veR 5

首先,元数据使用大量内存不一定有问题——这只是意味着可用于缓存实际文档的 RAM 较少。如果您的应用程序运行良好,那么它可能适合您的用例。但是,话虽如此,让我尝试解决您的问题,以及如果您确实想改进哪些方面需要改变:

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

IIRC“RAM 中的用户数据”包括“RAM 中的元数据” - 因此您总共使用了 59 GB 数据,其中 46 GB 是元数据。

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

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

11GB free主要是bucket quota和high watermark的差。

这里有几个选项可以改善这一点:

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