配置项作用 #
rollup.search.backoff_count 配置项用于控制Rollup 搜索操作失败时的最大重试次数。
当 Rollup 搜索操作因网络问题、节点不可用或其他临时性错误失败时,系统会根据此配置的值决定最多重试多少次。
配置项属性 #
- 配置路径:
rollup.search.backoff_count - 数据类型:
Integer(整数) - 默认值:
5 - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(可以动态更新,无需重启)
- 废弃状态: 已废弃
配置项详解 #
工作机制 #
重试机制流程
Rollup 搜索请求:
├── 执行搜索
├── 成功?
│ ├── 是 → 返回结果 ✅
│ └── 否 → 继续
├── 重试次数 < backoff_count?
│ ├── 是 → 等待 backoff_millis
│ │ └── 重试
│ └── 否 → 返回失败 ❌
重试策略 #
恒定退避策略
backoff_count: 5
backoff_millis: 1000ms
重试时间线:
尝试 1: 0ms → 失败
↓ 等待 1000ms
尝试 2: 1000ms → 失败
↓ 等待 1000ms
尝试 3: 2000ms → 失败
↓ 等待 1000ms
尝试 4: 3000ms → 失败
↓ 等待 1000ms
尝试 5: 4000ms → 失败
↓ 等待 1000ms
尝试 6: 5000ms → 超过 backoff_count
↓
返回失败 ❌
总耗时: 约 5 秒
错误场景处理 #
可重试的错误:
1. 网络问题
├── 连接超时
├── 网络中断
└── 节点不可用
2. 临时错误
├── 节点重启中
├── 负载过高
└── 临时性故障
3. 搜索超时
├── 响应超时
├── 查询执行超时
└── 节点响应慢
不适合重试的错误:
1. 查询语法错误 ❌
2. 字段不存在 ❌
3. 权限不足 ❌
4. 索引不存在 ❌
代码实现 #
// 初始化退避策略
@Volatile
private var retrySearchPolicy =
BackoffPolicy.constantBackoff(
ROLLUP_SEARCH_BACKOFF_MILLIS.get(settings),
ROLLUP_SEARCH_BACKOFF_COUNT.get(settings)
)
// 动态更新支持
init {
clusterService.clusterSettings.addSettingsUpdateConsumer(
ROLLUP_SEARCH_BACKOFF_MILLIS,
ROLLUP_SEARCH_BACKOFF_COUNT
) { millis, count ->
retrySearchPolicy = BackoffPolicy.constantBackoff(millis, count)
}
}
// 执行搜索时使用重试
fun executeCompositeSearch(request: SearchRequest): SearchResponse {
return retrySearchPolicy.retry {
// 执行实际的搜索操作
doSearch(request)
}
}
配置建议 #
默认配置 #
rollup:
search:
backoff_count: 5 # 默认值
backoff_millis: 1000
建议: 大多数场景使用默认值。
网络不稳定环境 #
rollup:
search:
backoff_count: 10 # 增加重试次数
backoff_millis: 2000
建议: 网络不稳定时增加重试次数和延迟。
高可用环境 #
rollup:
search:
backoff_count: 3 # 减少重试次数
backoff_millis: 500
建议: 网络稳定时可减少重试,加快失败响应。
快速失败 #
rollup:
search:
backoff_count: 1 # 只重试一次
backoff_millis: 500
建议: 需要快速响应时使用。
动态更新 #
PUT /_cluster/settings
{
"transient": {
"rollup.search.backoff_count": 8
}
}
代码示例 #
基础配置 #
rollup:
search:
backoff_count: 5
完整重试配置 #
rollup:
search:
backoff_count: 5
backoff_millis: 1000
高重试配置 #
rollup:
search:
backoff_count: 10
backoff_millis: 2000
低延迟配置 #
rollup:
search:
backoff_count: 3
backoff_millis: 500
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
search.backoff_count | 重试次数 | 5 |
search.backoff_millis | 重试延迟 | 1000ms |
search.enabled | 搜索功能开关 | false |
注意事项 #
默认值: 默认值为
5次。动态更新: 支持动态更新,无需重启。
已废弃: 配置项已废弃,可能在未来版本移除。
恒定退避: 使用恒定退避策略,每次重试间隔相同。
总耗时: 总重试耗时约为
backoff_count × backoff_millis。合理设置: 过多重试会延长失败响应时间。
错误类型: 只对可重试的错误进行重试。
配合使用: 应与
backoff_millis配合使用。监控建议: 监控重试次数和成功率。
网络环境: 根据网络稳定性调整配置。
故障排查 #
重试失败排查
问题: 搜索频繁重试
排查:
├── 检查网络连接
├── 检查节点状态
├── 检查负载情况
└── 检查错误日志
解决:
├── 增加 backoff_count
├── 增加 backoff_millis
├── 修复网络问题
└── 优化集群状态
问题: 重试浪费时间
排查:
├── 检查错误类型
├── 检查是否可重试
└── 检查配置是否合理
解决:
├── 减少 backoff_count
├── 减少 backoff_millis
├── 修复根本原因
└── 使用快速失败模式





