配置项作用 #
indices.replication.retry_timeout 配置项控制副本复制操作失败后重试的总超时时间。当向副本节点执行操作(如索引、删除、更新等)失败时,系统会在指定时间内进行重试,超过此时间后将停止重试并返回错误。
配置项类型 #
该配置项为动态配置,可以在运行时通过索引设置 API 进行修改。
默认值 #
60s
是否必需 #
可选配置项(有默认值)
取值范围 #
0 ~ 正无穷
配置格式 #
# 默认配置
indices.replication.retry_timeout: 60s
# 增加重试时间
indices.replication.retry_timeout: 120s
# 减少重试时间
indices.replication.retry_timeout: 30s
# 快速失败
indices.replication.retry_timeout: 10s
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
indices.replication.retry_timeout | 60s | 重试总超时时间 |
indices.replication.initial_retry_backoff_bound | 50ms | 初始重试退避上限 |
工作原理 #
副本复制重试机制:
┌─────────────────────────────────────────────────────────────────┐
│ 副本复制重试流程 │
└─────────────────────────────────────────────────────────────────┘
操作执行到副本
│
├── 成功 → 完成
│
└── 失败
│
▼
检查重试时间
│
├── 已用时间 < retry_timeout
│ │
│ └── 指数退避后重试
│ │
│ ├── 50ms, 100ms, 200ms, 400ms...
│ └── 继续重试直到成功或超时
│
└── 已用时间 >= retry_timeout
│
└── 放弃重试,返回错误
指数退避机制 #
重试延迟计算:
初始退避上限: 50ms
第1次重试: random(0, 50ms]
第2次重试: random(0, 100ms]
第3次重试: random(0, 200ms]
第4次重试: random(0, 400ms]
...
持续增长直到 retry_timeout
示例(retry_timeout = 60s):
0s: 首次尝试失败
0.05s: 第1次重试
0.15s: 第2次重试
0.35s: 第3次重试
0.75s: 第4次重奏
1.55s: 第5次重试
...
60s: 超时,放弃重试
使用场景 #
1. 默认配置(推荐) #
indices.replication.retry_timeout: 60s
适用于大多数集群配置。
2. 不稳定网络 #
indices.replication.retry_timeout: 120s
适用场景:
- 跨地域部署
- 网络不稳定
- 高延迟网络
3. 快速失败 #
indices.replication.retry_timeout: 30s
适用场景:
- 需要快速响应
- 不希望长时间等待
- 自动重试机制在客户端
4. 复制关键数据 #
indices.replication.retry_timeout: 180s
适用场景:
- 关键业务数据
- 不能容忍复制失败
- 网络条件不佳
推荐设置建议 #
| 网络环境 | 推荐超时 | 说明 |
|---|---|---|
| 稳定内网 | 30-60s | 快速失败 |
| 同地域 | 60s | 默认配置 |
| 跨地域 | 120-180s | 考虑延迟 |
| 不稳定网络 | 120s | 更多重试机会 |
动态配置示例 #
# 更新现有索引
PUT /my_index/_settings
{
"index.replication.retry_timeout": "90s"
}
# 设置为所有索引
PUT /_template/default_replication
{
"index_patterns": ["*"],
"settings": {
"index.replication.retry_timeout": "60s"
}
}
监控建议 #
# 查看当前配置
GET /my_index/_settings?filter_path=*.replication.retry_timeout
# 查看副本状态
GET /_cat/shards?v&h=index,shard,prirep,state,node
# 查看复制延迟
GET /_cat/pending_tasks?v
故障排查 #
复制频繁失败 #
- 检查网络连接
- 检查副本节点状态
- 增加重试超时时间
- 检查副本节点磁盘空间
响应时间过长 #
- 检查重试日志
- 考虑减少重试超时
- 优化网络连接
- 检查副本节点负载
与 initial_retry_backoff_bound 配合 #
# 快速重试策略
indices.replication.retry_timeout: 30s
indices.replication.initial_retry_backoff_bound: 100ms
# 慢速重试策略
indices.replication.retry_timeout: 120s
indices.replication.initial_retry_backoff_bound: 200ms
注意事项 #
- 动态更新:此配置为动态配置,可在线修改
- 指数退避:重试延迟呈指数增长
- 影响响应时间:重试期间操作不会返回
- 与网络相关:网络延迟大的环境需要更长超时
- 不影响主分片:主分片操作不受重试影响
- 写一致性:配合 wait_for_active_shards 使用





