配置项作用 #
rollup.search.backoff_millis 配置项用于控制Rollup 搜索操作每次重试之间的等待时间。
当 Rollup 搜索操作失败后,系统会等待此配置指定的时间后再进行下一次重试,用于避免过快重试导致系统压力过大。
配置项属性 #
- 配置路径:
rollup.search.backoff_millis - 数据类型:
TimeValue(时间值) - 默认值:
1000ms(1 秒) - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 是(可以动态更新,无需重启)
- 废弃状态: 已废弃
配置项详解 #
工作机制 #
重试延迟机制
搜索请求 → 失败
↓
等待 backoff_millis
↓
重试 1 → 失败
↓
等待 backoff_millis
↓
重试 2 → 失败
↓
...
↓
重试 N → 成功 ✅ 或达到 backoff_count 次数
时间线示例 #
backoff_millis: 1000ms (1秒)
重试时间线:
时刻 0s: 尝试 1 → 失败
↓ 等待 1s
时刻 1s: 尝试 2 → 失败
↓ 等待 1s
时刻 2s: 尝试 3 → 失败
↓ 等待 1s
时刻 3s: 尝试 4 → 失败
↓ 等待 1s
时刻 4s: 尝试 5 → 失败
↓ 等待 1s
时刻 5s: 返回失败 ❌
总耗时: 5 秒
backoff_millis: 2000ms (2秒)
重试时间线:
时刻 0s: 尝试 1 → 失败
↓ 等待 2s
时刻 2s: 尝试 2 → 失败
↓ 等待 2s
时刻 4s: 尝试 3 → 失败
↓ 等待 2s
时刻 6s: 尝试 4 → 失败
↓ 等待 2s
时刻 8s: 尝试 5 → 失败
↓ 等待 2s
时刻 10s: 返回失败 ❌
总耗时: 10 秒
恒定退避策略 #
退避策略类型
恒定退避 (Constant Backoff):
├── 每次重试间隔相同
├── backoff_millis: 1000ms
├── 重试间隔: 1000ms → 1000ms → 1000ms → ...
└── 简单可预测
指数退避 (Exponential Backoff):
├── 每次重试间隔递增
├── 初始: 100ms
├── 重试间隔: 100ms → 200ms → 400ms → 800ms → ...
└── Rollup 不使用此策略
Rollup 使用恒定退避:
├── 易于配置
├── 行为可预测
├── 适合短暂故障
└── 配置简单
配置权衡 #
延迟时间选择
短延迟 (100-500ms):
├── 优点:
│ ├── 快速重试
│ ├── 失败响应快
│ └── 适合短暂故障
│
└── 缺点:
├── 可能过于频繁
├── 增加系统压力
└── 可能无法恢复
中等延迟 (1000-2000ms) - 推荐:
├── 优点:
│ ├── 平衡重试速度
│ ├── 给系统恢复时间
│ └── 适合大多数场景
│
└── 缺点:
└── 失败响应稍慢
长延迟 (3000-5000ms):
├── 优点:
│ ├── 减少系统压力
│ ├── 更长恢复时间
│ └── 适合严重故障
│
└── 缺点:
├── 失败响应慢
├── 用户体验差
└── 可能浪费时间
配置建议 #
默认配置 #
rollup:
search:
backoff_millis: 1000 # 1秒(默认)
backoff_count: 5
建议: 大多数场景使用默认值。
网络不稳定环境 #
rollup:
search:
backoff_millis: 2000 # 2秒
backoff_count: 8
建议: 网络不稳定时增加延迟和重试次数。
快速恢复环境 #
rollup:
search:
backoff_millis: 500 # 0.5秒
backoff_count: 3
建议: 网络稳定且需要快速响应时使用。
高延迟环境 #
rollup:
search:
backoff_millis: 3000 # 3秒
backoff_count: 5
建议: 节点响应慢或负载高时使用。
动态更新 #
PUT /_cluster/settings
{
"transient": {
"rollup.search.backoff_millis": "2000ms"
}
}
代码示例 #
基础配置 #
rollup:
search:
backoff_millis: 1000
时间值格式 #
rollup:
search:
backoff_millis: 1s # 秒
# 或
backoff_millis: 1000 # 毫秒
完整重试配置 #
rollup:
search:
backoff_count: 5
backoff_millis: 1000
快速重试 #
rollup:
search:
backoff_count: 3
backoff_millis: 500ms
慢速重试 #
rollup:
search:
backoff_count: 5
backoff_millis: 3000ms
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
search.backoff_millis | 重试延迟 | 1000ms |
search.backoff_count | 重试次数 | 5 |
search.enabled | 搜索功能开关 | false |
注意事项 #
默认值: 默认值为
1000ms(1 秒)。动态更新: 支持动态更新,无需重启。
已废弃: 配置项已废弃,可能在未来版本移除。
总耗时: 总重试耗时约为
backoff_count × backoff_millis。合理设置: 根据网络状况和故障恢复时间设置。
时间格式: 支持毫秒和秒格式(如
1000或1s)。配合使用: 应与
backoff_count配合使用。系统压力: 过短的延迟可能增加系统压力。
用户体验: 过长的延迟影响用户体验。
监控建议: 监控重试成功率和平均响应时间。
场景选择 #
场景选择指南
网络稳定 + 节点健康:
├── backoff_millis: 500ms
├── backoff_count: 3
└── 快速失败 ✅
网络一般 + 节点一般:
├── backoff_millis: 1000ms
├── backoff_count: 5
└── 默认配置 ✅
网络不稳定 + 节点负载高:
├── backoff_millis: 2000ms
├── backoff_count: 8
└── 增加重试 ✅
跨机房 / 跨区域:
├── backoff_millis: 3000ms
├── backoff_count: 5
└── 长延迟 ✅
故障排查 #
延迟配置问题排查
问题: 重试太慢
检查:
├── backoff_millis 设置
├── backoff_count 设置
└── 总耗时计算
解决:
├── 减少 backoff_millis
├── 减少 backoff_count
└── 优化网络/节点状态
问题: 重试仍然失败
检查:
├── 错误类型
├── 根本原因
└── 是否可重试
解决:
├── 修复根本问题
├── 增加延迟和次数
└── 考虑熔断机制
问题: 系统压力大
检查:
├── 重试频率
├── 并发请求数
└── 节点负载
解决:
├── 增加 backoff_millis
├── 减少 backoff_count
└── 限流控制





