我有一个包含三个节点的集群。我们在里面创建了一个存储桶,并将存储桶副本的数量设置为2.除了RAM配额设置为每个节点10G,即总RAM配额为30G。
我使用客户端将数据保存到此存储桶中。几小时后,客户端打印出临时故障错误。和Couchbase网络控制台显示,桶RAM达到29G。重复数据压缩,但RAM不再减少。
我的问题安排如下:
1,我猜桶中的密钥只能保存到RAM中,而不能保存在硬件中,不管是对还是错?
2,无法压缩到硬件中的29G数据是否关键?
3,保存其他节点的副本信息的每个节点是否保存在硬件中?如果没有,怎么可以保存。
4,每次客户端保存数据时,它都会利用哈希函数来评估vbucket,以判断哪些节点将保存数据。进程是否在客户端进行?
答案 0 :(得分:4)
回答您的具体问题:
1,我猜桶中的密钥只能保存到RAM中,而不能保存在硬件中,不管是对还是错?
如果硬件是指磁盘;那么是的,目前Couchbase必须在RAM中保存所有文档密钥(以及一些额外的元数据)。这是为了确保能够立即回答对密钥的任何请求,包括正面("是,这个密钥存在,这里是它的值)和负面("不,这样的钥匙不存在。)"
2,无法压缩到硬件中的29G数据是否关键?
其中一些可能是元数据。如果您转到 Bucket 标签并通过点击它的名称显示它的统计信息,您可以看到使用的内存量 - 具体在 VBucket资源< / em>选项卡可查看元数据和用户数据的使用量。有关详细信息,请参阅Couchbase Admin Guide - Viewing Bucket and cluster statistics。
3,保存其他节点的副本信息的每个节点是否保存在硬件中?如果没有,怎么可以保存。
副本元数据也始终保存在RAM中,但副本值(如活动值)可以弹出到磁盘以释放内存。
4,每次客户端保存数据时,它都会利用哈希函数来评估vbucket,以判断哪些节点将保存数据。进程是否在客户端进行?
是的,vbucket哈希在客户端上完成 - 请参阅管理指南中的Architecture and Concepts - Vbuckets部分。
通常,您可能需要查看管理指南中的Sizing chapter,以确定您有多少内存用于存储关键元数据 - 特别是Memory Sizing部分。确切的计算取决于Couchbase的版本(因此我不会在这里重复)。