📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

indices.replication.initial_retry_backoff_bound 配置项控制副本复制操作失败后第一次重试的退避时间上限。后续重试的退避时间呈指数增长,每次翻倍,直到达到 indices.replication.retry_timeout 设置的总超时时间。

配置项类型 #

该配置项为动态配置,可以在运行时通过索引设置 API 进行修改。

默认值 #

50ms

是否必需 #

可选配置项(有默认值)

取值范围 #

10ms ~ 正无穷

配置格式 #

# 默认配置
indices.replication.initial_retry_backoff_bound: 50ms

# 增加初始退避
indices.replication.initial_retry_backoff_bound: 100ms

# 减少初始退避
indices.replication.initial_retry_backoff_bound: 20ms

# 快速重试
indices.replication.initial_retry_backoff_bound: 10ms

相关配置项 #

配置项默认值说明
indices.replication.retry_timeout60s重试总超时时间
indices.replication.initial_retry_backoff_bound50ms初始重试退避上限

工作原理 #

指数退避机制:

┌─────────────────────────────────────────────────────────────────┐
│                    指数退避重试流程                              │
└─────────────────────────────────────────────────────────────────┘

复制操作失败
    │
    ▼
计算第1次重试延迟
    │
    └── random(0, initial_retry_backoff_bound]
        │
        ▼
    第1次重试
        │
        ├── 成功 → 完成
        │
        └── 失败
             │
             ▼
        计算第2次重试延迟
             │
             └── random(0, initial_retry_backoff_bound × 2]
                  │
                  ▼
             第2次重试
                  │
                  ├── 成功 → 完成
                  │
                  └── 失败
                       │
                       └── 继续指数退避...

退避时间计算 #

退避时间公式:

第n次重试延迟 = random(0, initial_retry_backoff_bound × 2^(n-1)]

示例(initial_retry_backoff_bound = 50ms):

┌──────┬───────────────────────┬─────────────┬───────────┐
│ 重试次数 │ 延迟计算              │ 最大延迟     │ 累计时间   │
├──────┼───────────────────────┼─────────────┼───────────┤
│ 1    │ random(0, 50ms]       │ 50ms        │ ~50ms     │
│ 2    │ random(0, 100ms]      │ 100ms       │ ~150ms    │
│ 3    │ random(0, 200ms]      │ 200ms       │ ~350ms    │
│ 4    │ random(0, 400ms]      │ 400ms       │ ~750ms    │
│ 5    │ random(0, 800ms]      │ 800ms       │ ~1550ms   │
│ 6    │ random(0, 1600ms]     │ 1.6s        │ ~3150ms   │
│ 7    │ random(0, 3200ms]     │ 3.2s        │ ~6350ms   │
│ 8    │ random(0, 6400ms]     │ 6.4s        │ ~12.75s   │
│ 9    │ random(0, 12800ms]    │ 12.8s       │ ~25.55s   │
│ 10   │ random(0, 25600ms]    │ 25.6s       │ ~51.15s   │
└──────┴───────────────────────┴─────────────┴───────────┘

使用场景 #

1. 默认配置(推荐) #

indices.replication.initial_retry_backoff_bound: 50ms

适用于大多数集群配置。

2. 网络不稳定 #

indices.replication.initial_retry_backoff_bound: 100ms

适用场景:

  • 网络波动大
  • 避免过于频繁重试
  • 减轻网络负载

3. 快速恢复 #

indices.replication.initial_retry_backoff_bound: 20ms

适用场景:

  • 稳定网络环境
  • 需要快速恢复
  • 减少复制延迟

4. 非常不稳定网络 #

indices.replication.initial_retry_backoff_bound: 200ms
indices.replication.retry_timeout: 120s

适用场景:

  • 跨地域部署
  • 高延迟网络
  • 避免重试风暴

推荐设置建议 #

网络环境推荐值retry_timeout说明
稳定内网20-50ms30-60s快速重试
同地域50ms60s默认配置
跨地域100-200ms120-180s考虑延迟
不稳定100-200ms120s避免风暴

动态配置示例 #

# 更新现有索引
PUT /my_index/_settings
{
  "index.replication.initial_retry_backoff_bound": "100ms"
}

# 同时配置退避和超时
PUT /my_index/_settings
{
  "index.replication.initial_retry_backoff_bound": "100ms",
  "index.replication.retry_timeout": "120s"
}

与 retry_timeout 的配合 #

配置策略:

快速恢复策略:
  initial_retry_backoff_bound: 20ms
  retry_timeout: 30s
  → 快速重试,快速超时

标准策略:
  initial_retry_backoff_bound: 50ms
  retry_timeout: 60s
  → 平衡配置

容忍策略:
  initial_retry_backoff_bound: 100ms
  retry_timeout: 120s
  → 更多重试机会

注意事项 #

  1. 动态更新:此配置为动态配置,可在线修改
  2. 指数增长:每次重试延迟翻倍
  3. 影响恢复速度:值越大恢复越慢
  4. 与网络相关:网络延迟大的环境需要更大的值
  5. 避免过小:过小可能导致重试风暴
  6. 合理搭配:与 retry_timeout 合理配置