配置项作用 #
discovery.zen.join_retry_delay 配置项用于控制节点加入集群失败后,下一次重试前的等待时间。
当节点尝试加入集群但遇到可重试的错误(如 NotMasterException)时,系统会等待此配置指定的时间后才进行下一次重试。
配置项属性 #
- 配置路径:
discovery.zen.join_retry_delay - 数据类型:
TimeValue(时间值) - 默认值:
100ms(100毫秒) - 最小值:
> 0(正数) - 是否可选: 是
- 弃用状态: ⚠️ 已弃用
配置项详解 #
工作机制 #
加入集群重试流程
新节点
│
↓
发送加入请求
│
└──────── NotMasterException (可重试错误)
↓
等待 join_retry_delay
│
↓
100ms 后重试
│
↓
再次发送加入请求
│
┌──────┴──────┐
│ │
成功 仍然失败
│ │
↓ ↓
加入集群 ✅ 再次等待延迟
│
↓
继续重试...
重试延迟的作用 #
无延迟场景:
失败 → 立即重试 → 失败 → 立即重试 → ...
↓
可能造成:
- 对主节点的压力
- 网络拥塞
- 资源浪费
有延迟场景:
失败 → 等待 100ms → 重试 → 失败 → 等待 100ms → 重试 → ...
↓
好处:
- 给主节点恢复时间
- 减少网络压力
- 避免资源浪费
配置建议 #
⚠️ 重要提示 #
此配置项已被标记为弃用,建议保持默认值。
生产环境(默认) #
discovery.zen.join_retry_delay: 100ms
建议: 保持默认值 100ms。这是快速恢复和资源消耗之间的平衡。
高负载环境 #
discovery.zen.join_retry_delay: 500ms
建议: 增加到 500ms-1s。当主节点负载高时,给其更多恢复时间。
稳定网络环境 #
discovery.zen.join_retry_delay: 50ms
建议: 减少到 50ms。网络稳定时可以加快重试速度。
代码示例 #
easysearch.yml 配置(已弃用) #
discovery:
zen:
join_retry_delay: 100ms # 默认值
配合重试次数配置 #
discovery:
zen:
join_retry_attempts: 3
join_retry_delay: 100ms
高负载环境配置 #
discovery:
zen:
join_retry_attempts: 5
join_retry_delay: 500ms # 增加延迟
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
discovery.zen.join_retry_delay | 重试之间的延迟 | 100ms |
discovery.zen.join_retry_attempts | 重试次数 | 3 |
discovery.zen.join_timeout | 加入超时时间 | ping_timeout × 20 |
discovery.zen.ping_timeout | ping 超时 | 3s |
加入总时间计算 #
加入总时间 ≈ (请求时间 + join_retry_delay) × join_retry_attempts
默认配置:
假设单次请求耗时 500ms
= (500ms + 100ms) × 3 = 1.8 秒
高负载配置:
假设单次请求耗时 2s
= (2000ms + 500ms) × 5 = 12.5 秒
延迟设置指南 #
| 环境类型 | 推荐延迟 | 说明 |
|---|---|---|
| 标准生产 | 100ms | 默认值,平衡速度和压力 |
| 高负载 | 300-500ms | 给主节点更多恢复时间 |
| 低延迟网络 | 50-100ms | 加快重试速度 |
| 不稳定网络 | 200-500ms | 容忍网络波动 |
性能影响分析 #
| join_retry_delay 设置 | 优点 | 缺点 |
|---|---|---|
| 较短(50ms) | 快速重试 | 可能增加主节点压力 |
| 中等(100ms) | 平衡恢复和压力 | 标准设置 |
| 较长(500ms) | 减少压力 | 恢复较慢 |
使用场景 #
推荐保持默认的场景 #
- 标准生产环境: 主节点负载正常
- 快速恢复: 需要快速完成节点加入
- 稳定网络: 网络延迟低且稳定
推荐增加的场景 #
- 高负载集群: 主节点处理能力有限
- 大量节点加入: 多个节点同时加入集群
- 资源受限: 需要控制重试频率
推荐减少的场景 #
- 紧急恢复: 需要尽快完成节点加入
- 低延迟网络: 网络条件极佳
- 小型集群: 节点数量少,压力小
注意事项 #
已弃用: 此配置已被标记为弃用,建议关注新的发现机制。
只对可重试错误生效: 只有
NotMasterException等可重试错误才会触发延迟重试。与重试次数配合: 总重试时间 = (请求时间 + delay) × attempts。
Thread.sleep 实现: 代码中使用
Thread.sleep()实现延迟,会阻塞线程。调试日志: 重试时使用 TRACE 级别日志记录。
动态更新: 此配置不支持动态更新。
版本兼容: Zen 发现机制已被弃用,新版本可能使用不同的机制。
配置验证: 确保延迟值不会过长,影响节点加入速度。





