CouchDB:max_replication_retry_count和retries_per_request之间的差异

时间:2017-06-20 03:24:34

标签: couchdb replication couchdb-2.0

我目前正在探索CouchDB复制并尝试找出 [replicator] max_replication_retry_count retries_per_request 配置选项之间的区别配置文件的一部分。

基本上我想配置本地couchdb连续复制到永远不会停止复制尝试的远程实例,考虑可能连续的离线时间(几天甚至几周)。因此,我希望进行无限复制尝试,最大重试间隔为5分钟左右。我可以这样做吗?我是否需要更改默认配置才能实现此目的?

1 个答案:

答案 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