3.11. 复制器¶
3.11.1. 复制器数据库配置¶
- [replicator]¶
- max_jobs¶
2.1 版新增。
正在运行的活动复制数量。此值表示触发自动复制调度程序的阈值。系统将每隔
interval
毫秒检查有多少个复制作业正在运行,如果运行的作业数量超过max_jobs
,调度程序将在调度程序队列中暂停并重新启动最多max_churn
个作业。将此值设置得太高会导致性能问题,而设置得太低则意味着复制作业可能没有足够的时间在再次取消调度之前取得进展。此参数可以在运行时调整,并在下一个重新调度周期生效。[replicator] max_jobs = 500
- interval¶
2.1 版新增。
以毫秒为单位的调度间隔。在每个重新调度周期中,调度程序可能会启动或停止最多
max_churn
个作业。[replicator] interval = 60000
- max_churn¶
2.1 版新增。
在重新调度期间启动和停止的复制作业的最大数量。此参数与
interval
一起定义了作业替换的速率。但是,在启动期间,可以在短时间内启动更多作业(最多max_jobs
)。[replicator] max_churn = 20
- max_history¶
为每个作业记录的事件的最大数量。此参数定义了作业连续失败计数的上限,进而定义了在确定重新启动作业之前的延迟时使用的最大回退因子。崩溃计数的长度越长,可能的延迟时间就越长。
[replicator] max_history = 20
- update_docs¶
2.1 版新增。
当设置为
true
时,复制器将使用错误和触发状态更新复制文档。这近似于 2.1 之前的复制器行为。[replicator] update_docs = false
- worker_batch_size¶
使用较低的批次大小,检查点会更频繁地完成。较低的批次大小还会减少使用的总 RAM 内存量。
[replicator] worker_batch_size = 500
- worker_processes¶
更多工作进程可以提供更高的网络吞吐量,但也可能意味着更多的磁盘和网络 IO。
[replicator] worker_processes = 4
- http_connections¶
每个复制的最大 HTTP 连接数。
[replicator] http_connections = 20
- connection_timeout¶
每个复制的 HTTP 连接超时。当复制器发出更改馈送请求时,这将除以三 (3)。即使对于非常快/可靠的网络,如果远程数据库太忙,也可能需要增加它。
[replicator] connection_timeout = 30000
- retries_per_request¶
2.1.1 版更改。
如果请求失败,复制器将最多重试 N 次。N 的默认值为 5(2.1.1 版之前为 10)。请求将以从 0.25 秒开始的双倍指数回退重试。因此,默认情况下,请求将在 0.25、0.5、1、2、4 秒的间隔内重试。当重试次数用尽时,整个复制作业将停止,并稍后重新尝试。
[replicator] retries_per_request = 5
- socket_options¶
一些套接字选项,在某些情况下可能会提高性能。
{nodelay, boolean()}
{sndbuf, integer()}
{recbuf, integer()}
{priority, integer()}
有关选项的完整列表,请参阅 inet Erlang 模块的手册页。
[replicator] socket_options = [{keepalive, true}, {nodelay, false}]
- valid_socket_options¶
3.3 版新增。
有效的套接字选项。不在此列表中的选项将被忽略。大多数这些选项都是低级选项,设置其中一些选项可能会导致意外或不可预测的行为。有关选项的完整列表,请参阅 inet Erlang 文档。
[replicator] valid_socket_options = buffer,keepalive,nodelay,priority,recbuf,sndbuf
- ibrowse_options¶
3.3.3 版新增: 需要非默认的 ibrowse 设置来支持仅 IPV6 的复制源或目标。
{prefer_ipv6, boolean()}
有关选项的完整列表,请参阅 ibrowse 网站。
[replicator] ibrowse_options = [{prefer_ipv6, true}]
- valid_ibrowse_options¶
3.3.3 版新增。
有效的 ibrowse 选项。不在此列表中的选项将被忽略。
[replicator] valid_ibrowse_options = prefer_ipv6
- valid_endpoint_protocols¶
3.3 版新增。
有效的复制端点协议。端点 URL 不在此列表中的复制作业将无法运行。
[replicator] valid_endpoint_protocols = http,https
- valid_proxy_protocols¶
3.3 版新增。
有效的复制代理协议。代理 URL 不在此列表中的复制作业将无法运行。
[replicator] valid_proxy_protocols = http,https,socks5
- checkpoint_interval¶
1.6 版新增。
以毫秒为单位定义复制检查点间隔。 复制器 将以指定的间隔从源数据库发出
请求
。[replicator] checkpoint_interval = 5000
较低的间隔可能对频繁更改的数据有用,而较高的值将降低带宽并对不经常更新的数据库发出更少的请求。
- use_checkpoints¶
1.6 版新增。
如果
use_checkpoints
设置为true
,CouchDB 将在复制期间以及复制完成后创建检查点。CouchDB 可以有效地从任何这些检查点恢复复制。[replicator] use_checkpoints = true
注意
检查点存储在源数据库和目标数据库上的 本地文档 中(这需要写入权限)。
警告
不建议禁用检查点,因为 CouchDB 将从源数据库的更改馈送的开头扫描。
- use_bulk_get¶
3.3 版新增。
如果
use_bulk_get
为true
,CouchDB 将尝试使用_bulk_get
HTTP API 端点从源获取文档。复制器应该在错误时自动回退到单个文档 GET;但是,在某些情况下,可能有用的是完全防止花费时间尝试调用_bulk_get
。
- cert_file¶
包含用户证书的文件的路径。
[replicator] cert_file = /full/path/to/server_cert.pem
- key_file¶
包含用户私有 PEM 编码密钥的文件的路径。
[replicator] key_file = /full/path/to/server_key.pem
- password¶
包含用户密码的字符串。仅在私钥文件受密码保护时使用。
[replicator] password = somepassword
- verify_ssl_certificates¶
设置为 true 以验证对等证书。
[replicator] verify_ssl_certificates = false
- ssl_trusted_certificates_file¶
包含对等方可信证书列表的文件(以 PEM 格式)。
[replicator] ssl_trusted_certificates_file = /etc/ssl/certs/ca-certificates.crt
- ssl_certificate_max_depth¶
最大对等方证书深度(即使证书验证关闭,也必须设置)。
[replicator] ssl_certificate_max_depth = 3
- auth_plugins¶
版本 2.2 中新增。
复制器客户端身份验证插件列表。插件将按顺序尝试,第一个成功初始化的插件将被使用。默认情况下,有两个插件可用:couch_replicator_auth_session 实现会话(cookie)身份验证,以及 couch_replicator_auth_noop 实现基本身份验证。为了向后兼容,无操作插件应在插件列表的末尾使用。
[replicator] auth_plugins = couch_replicator_auth_session,couch_replicator_auth_noop
- usage_coeff¶
版本 3.2.0 中新增。
使用系数在每个调度周期衰减历史公平份额使用情况。该值必须介于 0.0 和 1.0 之间。较低的值将确保历史使用情况更快衰减,而较高的值意味着它将被记住更长时间。
[replicator] usage_coeff = 0.5
- priority_coeff¶
版本 3.2.0 中新增。
优先级系数会衰减所有作业的优先级,使它们缓慢地向运行队列的前面漂移。此系数定义了此算法运行的最大时间窗口。例如,如果此值太小(0.1),则经过几个周期后,相当多的作业最终会达到优先级 0,并且会使此算法变得无用。默认值为 0.98,这样选择是为了确保如果一个作业运行了一个调度周期,然后没有运行 7 个小时,它仍然具有优先级 > 0。7 个小时的选择是因为它足够接近 8 个小时,而 8 个小时是默认的最大错误回退间隔。
[replicator] priority_coeff = 0.98