2017-06-20 66 views
1

區別,我目前正在探索CouchDB的複製,並試圖找出max_replication_retry_countretries_per_request配置選項之間的差異[複製]配置文件的部分。CouchDB的:max_replication_retry_count之間retries_per_request

基本上我想配置本地couchdb連續複製到遠程實例,永遠不會停止複製嘗試,考慮到可能連續的離線時間(幾天甚至幾周)。所以,我想要進行無限次的複製嘗試,最大重試間隔爲5分鐘左右。我可以這樣做嗎?我是否需要更改默認配置來實現此目的?

回答

0

下面是我在CouchDB的郵件列表得到的答覆:

如果我們談論沙發1.6,屬性retries_per_request 控制了一些嘗試當前的複製是要做到 讀在放棄之前改變飼料。屬性 max_replication_retry_count控制整個複製作業將由複製管理器重試的次數。 將此屬性設置爲「infinity」應使複製管理員永不放棄。

我不認爲這些嘗試之間的間隔是可配置的。至於 據我瞭解,它將從 重試之間的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.因此,個別請求會幾次重試 約10 - 20秒,然後整個複製作業 將崩潰並重試。

如果您使用當前的主,它具有新的調度 複製:無需設置「max_replication_retry_count」,即設置 消失了,所有複製作業將一直重試,只要 複製文件存在。但是「retries_per_request」與上面的作品一樣 。當複製作業連續失敗時,複製調度程序也會進行指數退避。第一次回退是30秒。然後 它翻倍爲1分鐘,2分鐘等等。大約8小時的最大退避等待時間爲 。但是,如果您不想平均等待4小時,則 複製在網絡連接恢復時重新啓動,而 需要大約5分鐘左右,請在 「replicator」配置中設置「max_history = 8」部分。 max_history控制每個複製作業保留過去事件的歷史記錄數量。如果連續崩潰的歷史較少,那麼退避等待間隔也將更短。

所以總結一下,爲的1.x/2.0版本:

[複製] max_replication_retry_count =無窮 retries_per_request = 6

對於當前主:

[複製] max_history = 8 retries_per_request = 6