--- title: "Rollup 搜索重试延迟配置" date: 2026-03-08 lastmod: 2026-03-08 description: "rollup.search.backoff_millis 配置项用于控制 Rollup 搜索操作每次重试之间的等待时间。" tags: ["Rollup", "搜索", "重试机制"] summary: "配置项作用 # 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 → ." --- ## 配置项作用 `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): ├── 优点: │ ├── 减少系统压力 │ ├── 更长恢复时间 │ └── 适合严重故障 │ └── 缺点: ├── 失败响应慢 ├── 用户体验差 └── 可能浪费时间 ``` ## 配置建议 ## 默认配置 ```yaml rollup: search: backoff_millis: 1000 # 1秒(默认) backoff_count: 5 ``` **建议**: 大多数场景使用默认值。 ## 网络不稳定环境 ```yaml rollup: search: backoff_millis: 2000 # 2秒 backoff_count: 8 ``` **建议**: 网络不稳定时增加延迟和重试次数。 ## 快速恢复环境 ```yaml rollup: search: backoff_millis: 500 # 0.5秒 backoff_count: 3 ``` **建议**: 网络稳定且需要快速响应时使用。 ## 高延迟环境 ```yaml rollup: search: backoff_millis: 3000 # 3秒 backoff_count: 5 ``` **建议**: 节点响应慢或负载高时使用。 ## 动态更新 ```json PUT /_cluster/settings { "transient": { "rollup.search.backoff_millis": "2000ms" } } ``` ## 代码示例 ## 基础配置 ```yaml rollup: search: backoff_millis: 1000 ``` ## 时间值格式 ```yaml rollup: search: backoff_millis: 1s # 秒 # 或 backoff_millis: 1000 # 毫秒 ``` ## 完整重试配置 ```yaml rollup: search: backoff_count: 5 backoff_millis: 1000 ``` ## 快速重试 ```yaml rollup: search: backoff_count: 3 backoff_millis: 500ms ``` ## 慢速重试 ```yaml rollup: search: backoff_count: 5 backoff_millis: 3000ms ``` ## 相关配置 | 配置项 | 作用 | 默认值 | |--------|------|--------| | `search.backoff_millis` | 重试延迟 | 1000ms | | `search.backoff_count` | 重试次数 | 5 | | `search.enabled` | 搜索功能开关 | false | ## 注意事项 1. **默认值**: 默认值为 `1000ms`(1 秒)。 2. **动态更新**: 支持动态更新,无需重启。 3. **已废弃**: 配置项已废弃,可能在未来版本移除。 4. **总耗时**: 总重试耗时约为 `backoff_count × backoff_millis`。 5. **合理设置**: 根据网络状况和故障恢复时间设置。 6. **时间格式**: 支持毫秒和秒格式(如 `1000` 或 `1s`)。 7. **配合使用**: 应与 `backoff_count` 配合使用。 8. **系统压力**: 过短的延迟可能增加系统压力。 9. **用户体验**: 过长的延迟影响用户体验。 10. **监控建议**: 监控重试成功率和平均响应时间。 ## 场景选择 ``` 场景选择指南 网络稳定 + 节点健康: ├── 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 └── 限流控制 ```