配置项作用 #
index_state_management.coordinator.backoff_count 配置项用于控制索引状态管理(ISM)协调器在操作失败后的最大重试次数。
当协调器执行批量操作失败时(如遇到 429 Too Many Requests 错误),系统会根据此配置进行重试。
配置项属性 #
- 配置路径:
index_state_management.coordinator.backoff_count - 数据类型:
Integer(整数) - 默认值:
0(不重试) - 最小值:
0 - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(支持动态更新)
配置项详解 #
工作机制 #
重试策略工作流程
协调器执行操作
│
↓
操作成功 ✅
│
└────→ 完成
操作失败 ❌
│
↓
检查 backoff_count
│
├──────── backoff_count = 0
│ ↓
│ 立即失败,不重试
│ ↓
│ 返回错误
│
└──────── backoff_count > 0
↓
等待 backoff_millis
│
↓
重新尝试操作
│
├─────── 成功 ✅ ──→ 完成
│
└─────── 失败 ❌
│
↓
重试次数 - 1
│
├──── > 0 ──→ 继续重试
│
└──── = 0 ──→ 放弃,返回错误
恒定退避策略 #
Constant Backoff 策略
backoff_count = 3
backoff_millis = 50ms
时间线:
0ms ────→ 50ms ────→ 100ms ────→ 150ms
│ │ │ │
尝试1 等待 尝试2 等待
失败 50ms 失败 50ms
│
↓
100ms ────→ 150ms ────→ 200ms
│ │
尝试3 等待
失败 50ms
│
↓
尝试4 (最后)
│
└───→ 失败
↓
返回错误
总耗时: 约 200ms
配置建议 #
生产环境(默认) #
index_state_management:
coordinator:
backoff_count: 0 # 默认值,不重试
建议: 保持默认值 0。让上层应用处理失败,现代集群通常有自我修复能力。
不稳定网络环境 #
index_state_management:
coordinator:
backoff_count: 3
backoff_millis: 100
建议: 设置为 3-5。网络不稳定或资源暂时不足时使用。
高可用要求 #
index_state_management:
coordinator:
backoff_count: 5
backoff_millis: 50
建议: 设置为 5-8。需要确保操作最终成功时使用。
快速失败场景 #
index_state_management:
coordinator:
backoff_count: 0 # 立即失败
backoff_millis: 50
建议: 保持为 0。需要快速检测和处理问题时使用。
代码示例 #
easysearch.yml 基础配置 #
index_state_management:
coordinator:
backoff_count: 0
启用重试配置 #
index_state_management:
coordinator:
backoff_count: 3
backoff_millis: 100
高重试次数配置 #
index_state_management:
coordinator:
backoff_count: 8
backoff_millis: 50
动态更新配置 #
PUT /_cluster/settings
{
"transient": {
"index_state_management.coordinator.backoff_count": 5
}
}
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
index_state_management.coordinator.backoff_count | 重试次数 | 0 |
index_state_management.coordinator.backoff_millis | 重试间隔(毫秒) | 50 |
重试场景分析 #
典型需要重试的场景
1. 429 Too Many Requests
└── 集群暂时过载,稍后重试可能成功
2. 503 Service Unavailable
└── 节点暂时不可用,可能很快恢复
3. 网络超时
└── 网络暂时拥塞,重试可能成功
4. 资源锁定
└── 索引暂时被锁定,等待后可重试
总重试时间计算 #
总重试时间估算
总时间 ≈ backoff_count × backoff_millis
示例 1: backoff_count = 3, backoff_millis = 50
总时间 ≈ 3 × 50ms = 150ms
示例 2: backoff_count = 5, backoff_millis = 100
总时间 ≈ 5 × 100ms = 500ms
示例 3: backoff_count = 0
总时间 = 0(不重试,立即失败)
使用场景 #
推荐不重试的场景 #
- 默认行为: 保持默认值
0 - 快速失败: 需要立即知道操作结果
- 集群健康: 集群状态良好,很少失败
- 上层处理: 有上层应用处理失败情况
推荐启用重试的场景 #
- 网络波动: 网络连接不稳定
- 高负载: 集群经常处于高负载状态
- 跨地域: 节点分布在不同地域
- 云环境: 云服务可能有临时限流
注意事项 #
默认不重试: 默认值为
0,表示不进行任何重试。与 backoff_millis 配合: 两个配置需要合理搭配。
恒定退避: 使用恒定退避策略,每次重试等待相同时间。
动态更新: 支持动态更新,修改后立即生效。
总耗时考虑: 重试次数过多会增加操作总耗时。
资源消耗: 重试会消耗额外资源,需要平衡。
错误日志: 所有重试失败会记录错误日志。
适用操作: 主要用于批量操作(如元数据更新)。
版本变化: 旧版本默认值为
2,新版本改为0。监控建议: 监控重试事件,评估是否需要调整配置。





