Couchbase元数据开销警告

时间:2014-05-26 16:37:19

标签: couchbase nosql

我有一个Couchbase(v 2.0.1)群集,其中包含以下规范:

  • 5个节点
  • 1 Bucket
  • 每节点16 GB Ram(总共80GB)
  • 每个节点200GB磁盘(总共1Tb)

目前我在此存储桶中有201.000.000个文档,并且只有200GB的磁盘在使用中。

我每分钟都会收到以下警告:

Metadata overhead warning. Over 51% of RAM allocated to bucket "my-bucket" on node "my-node" is taken up by keys and metadata. 

Couchbase文档说明了以下内容:

  

表示存储桶现在使用的已分配超过50%   RAM用于存储元数据和密钥,减少RAM的数量   可用于数据值。

据我所知,这可能是一个有用的指标,我可能需要将节点添加到我的群集中,但我认为这不应该是必要的,因为存储桶可用的资源量。

General Bucket Analytics: General Bucket Analytics

我怎么知道是什么产生了如此多的元数据?

有没有办法配置公差百分比?

1 个答案:

答案 0 :(得分:7)

每个文档都有元数据和存储在内存中的密钥。元数据是56个字节。将其添加到平均密钥大小,并将结果乘以文档计数,以得出元数据和内存中密钥的总字节数。因此,所需的RAM受文档计数,密钥大小和副本数量(副本计数+ 1)的影响。您可以在http://docs.couchbase.com/couchbase-manual-2.5/cb-admin/#memory-quota找到详细信息。具体的公式是:

(documents_num) * (metadata_per_document + ID_size) * (no_of_copies)

您可以从控制台(或通过REST或命令行界面)获取有关群集使用的用户和元数据的详细信息。看看' VBUCKET RESOURCES'部分。感兴趣的具体值是RAM'中的用户数据。 RAM中的元数据和'中的元数据。从截图中,您肯定会遇到内存容量。您处于低水位线,因此系统将从内存中弹出非活动副本文档。如果越过高水位标记,系统将开始从内存中弹出活动文档,直到达到低水位线。任何对弹出文件的请求都需要后台磁盘提取。从屏幕截图中,您的内存中的活动文档中只有不到5%。

可以在2.5.1版本中更改警告元数据警告阈值。您可以在https://gist.github.com/fprimex/11368614找到一个可以使用的脚本。或者您可以简单地利用脚本中的curl命令并为群集插入正确的值。据我所知,这在2.5.1之前不起作用。

请记住,虽然这些警报(最大开销和最大磁盘使用量)现在是可调的,但它们是有原因的。以默认值命中这些警报(特别是在生产中)是引起关注的主要原因,应尽快通过增加每个节点上的RAM和/或磁盘或添加节点来处理。对于特殊情况,这些值是可调的。即使在开发/测试场景中,您的节点也是如此。如果您要点击这些警报,性能可能会受到严重影响。例如,如果你的节点没有得到关于基准测试结果的结论。 RAM占元数据消耗的50%以上。