3.3. 配置集群

3.3.1. 集群选项

[cluster]
q

设置新创建数据库的默认分片数量。默认值为 2,将数据库分成 2 个独立的分区。

[cluster]
q = 2

对于只有几个大型数据库且访问量很大的系统,或者对于具有多个 CPU 内核的服务器,请考虑将此值增加到 48

在数据库创建时,也可以在每个数据库的基础上覆盖 q 的值。

另请参阅

PUT /{db}

n

设置集群中每个文档的副本数量。CouchDB 仅将每个节点上的一个副本放置在集群中。通过 集群设置向导 设置时,独立的单节点将具有 n = 1,双节点集群将具有 n = 2,任何更大的集群将具有 n = 3。建议不要将 n 设置为大于 3

[cluster]
n = 3
placement

警告

使用此选项将覆盖副本基数的 n 选项。谨慎使用。

在创建新数据库时设置集群范围的副本放置策略。该值必须是逗号分隔的字符串列表,格式为 zone_name:#,其中 zone_name 是在 nodes 数据库中指定的区域,# 是一个整数,表示要放置在具有匹配 zone_name 的节点上的副本数量。

默认情况下不指定此参数。

[cluster]
placement = metro-dc-a:2,metro-dc-b:1
seedlist

一个可选的逗号分隔的节点名称列表,该节点应联系这些节点以加入集群。如果配置了 seedlist,则 _up 端点将返回 404,直到该节点成功联系到 seedlist 中的至少一个成员并复制了 _nodes_dbs_users 系统数据库的最新副本。

reconnect_interval_sec

3.3 版新增。

以秒为单位的周期,指定尝试重新连接到断开连接的节点的频率。此值将应用 25% 的随机抖动。

3.3.2. RPC 性能调优

[rexi]

CouchDB 使用分布式 Erlang 在集群中的节点之间进行通信。 rexi 库在此通信通道上提供优化的 RPC 机制。此系统有一些配置旋钮,但总的来说,默认设置效果很好。

buffer_count

如果远程节点不可用,本地 RPC 服务器将缓冲消息。此标志确定在本地服务器开始丢弃消息之前将缓冲多少消息。默认值为 2000

server_per_node

默认情况下,rexi 将为集群中的每个节点生成一个本地 gen_server 进程。禁用此标志将导致 CouchDB 对所有 RPC 通信使用单个进程,这在高吞吐量部署中不推荐使用。

stream_limit

3.0 版新增。

此标志在流操作(如视图和变更提要)期间发挥作用。它控制远程工作进程可以在等待协调器进程确认之前向协调器进程发送多少消息。如果此值太大,协调器可能会被工作进程的消息淹没,实际上会降低到客户端的整体吞吐量。在 CouchDB 2.x 中,此值被硬编码为 10。在 3.x 系列中,它是可配置的,默认值为 5。具有高 q 值的数据库对该设置特别敏感。