配置项作用 #
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_timeout | 60s | 重试总超时时间 |
indices.replication.initial_retry_backoff_bound | 50ms | 初始重试退避上限 |
工作原理 #
指数退避机制:
┌─────────────────────────────────────────────────────────────────┐
│ 指数退避重试流程 │
└─────────────────────────────────────────────────────────────────┘
复制操作失败
│
▼
计算第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-50ms | 30-60s | 快速重试 |
| 同地域 | 50ms | 60s | 默认配置 |
| 跨地域 | 100-200ms | 120-180s | 考虑延迟 |
| 不稳定 | 100-200ms | 120s | 避免风暴 |
动态配置示例 #
# 更新现有索引
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
→ 更多重试机会
注意事项 #
- 动态更新:此配置为动态配置,可在线修改
- 指数增长:每次重试延迟翻倍
- 影响恢复速度:值越大恢复越慢
- 与网络相关:网络延迟大的环境需要更大的值
- 避免过小:过小可能导致重试风暴
- 合理搭配:与 retry_timeout 合理配置





