3.11. 复制因子

3.11.1. Replicator数据库配置

[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 replicator将使用错误和触发状态更新复制文档。这近似于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连接超时。当复制器发出更改feed请求时,这个值除以三(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}]
checkpoint_interval

1.6 新版功能.

定义复制检查点间隔(毫秒)。 Replicator:get:`requests </{{db}}>` 以指定的时间间隔从源数据库:

[replicator]
checkpoint_interval = 5000

较短的时间间隔对于频繁更改的数据可能很有用,而较高的值将降低带宽,并减少对不经常更新的数据库的请求。

use_checkpoints

1.6 新版功能.

如果 use_checkpoints 设置为 true ,CouchDB将在复制期间和复制完成时创建检查点。CouchDB可以有效地从以下任一检查点恢复复制:

[replicator]
use_checkpoints = true

注解

检查点存储在 local documents 在源数据库和目标数据库上(这需要写访问权限)。

警告

禁用检查点是 未推荐的 因为CouchDB将从一开始扫描源数据库的更改提要。

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 新版功能.

replicator客户端身份验证插件的列表。将按顺序尝试插件,并使用第一个成功初始化的插件。默认情况下,有两个插件可用: couch_replicator_auth_session 实现会话(cookie)身份验证,以及 couch_replicator_auth_noop 实现基本身份验证。为了向后兼容,no-op插件应该用在插件列表的末尾:

[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小时:

[replicator]
priority_coeff = 0.98

3.11.2. 公平份额复制器份额分配

[replicator.shares]
$replicator_db

3.2.0 新版功能.

公平份额配置节。共享越多,来自该数据库的作业运行的机会就越高。默认值为100,最小值为1,最大值为1000。即使数据库不存在,也可以设置配置::

[replicator.shares]
_replicator_db = 100
$another/_replicator_db = 100