我目前正在探索CouchDB复制并尝试找出 [replicator] 中 max_replication_retry_count 和 retries_per_request 配置选项之间的区别配置文件的一部分。
基本上我想配置本地couchdb连续复制到永远不会停止复制尝试的远程实例,考虑可能连续的离线时间(几天甚至几周)。因此,我希望进行无限复制尝试,最大重试间隔为5分钟左右。我可以这样做吗?我是否需要更改默认配置才能实现此目的?
答案 0 :(得分:2)
以下是我在CouchDB邮件列表中收到的回复:
如果我们正在讨论Couch 1.6,则属性 retries_per_request 控制当前复制将要执行的多次尝试 在放弃之前阅读_changes feed。属性 max_replication_retry_count 控制复制管理器将重试整个复制作业的次数。 将此属性设置为“无穷大”应该进行复制 经理永不放弃。
我不认为这些尝试之间的间隔是可配置的。如 据我所知,它将从2.5秒开始 重试,然后加倍,直到达到10分钟,这将是 硬上限。
扩展答案:
答案略有不同,具体取决于您是否使用1.x / 2.0 发布或当前的主人。
如果您使用的是1.x或2.0版本:请设置“max_replication_retry_count = 无限“所以它总是会重试失败的复制。那个设置 控制如果有任何错误,整个复制作业如何重新启动。 然后“retries_per_request”可用于处理个人的错误 复制器HTTP请求。基本上是快速立即的情况 重试成功。 “retries_per_request”的默认值为10。 第一次失败后,等待0.25秒。然后在下一个 失败它加倍到0.5等等。最长等待间隔为5分钟。 但是,如果你希望常规离线,也许它不值得 重试个人请求太长时间,以减少 “retries_per_request”为6或7.因此,个别请求将重试a 几次大约10 - 20秒然后整个复制工作 将崩溃并重试。
如果您正在使用具有新计划的当前主服务器 replicator:无需设置“max_replication_retry_count”,即该设置 已经消失,所有复制作业将始终重试 复制文档存在。但“retries_per_request”的作用相同 如上。复制调度程序在执行时也会执行指数退避 复制作业连续失败。第一次退避是30秒。然后 它加倍到1分钟,2分钟,依此类推。最大退避等待是 大约8个小时。但如果你不想平均等待4个小时 恢复网络连接时重新启动的复制,以及 想要大约5分钟左右,设置“max_history = 8” “replicator”配置部分。 max_history控制着多少历史 为每个复制作业保留过去的事件。如果少了 连续崩溃的历史,即退避等待间隔也将 更短。
总而言之,对于1.x / 2.0版本:
[replicator] max_replication_retry_count =无穷大 retries_per_request = 6
目前的主人:
[replicator] max_history = 8 retries_per_request = 6