配置项作用 #
discovery.zen.fd.ping_timeout 配置项用于控制故障检测机制中单次 ping 请求的超时时间。
当节点向其他节点发送 ping 请求时,如果在此时间内未收到响应,则视为该次 ping 失败。
配置项属性 #
- 配置路径:
discovery.zen.fd.ping_timeout - 数据类型:
TimeValue(时间值) - 默认值:
30s(30秒) - 是否可选: 是
- 弃用状态: ⚠️ 已弃用
配置项详解 #
工作机制 #
Ping 超时检测
节点A ─────────────────────→ 节点B
│
│ Ping 请求 ─────────────→
│ │
│ 等待响应 (最多 ping_timeout)│
│ │
├──────── < 30s ─────────────┤ 收到响应
│ ↓ │
│ Ping 成功 ✅ │
│ │
└──────── ≥ 30s ─────────────┤ 超时
↓ │
Ping 失败 ❌ │
↓ │
retryCount++ │
两种应用场景 #
1. 主节点故障检测(MasterFaultDetection) #
数据节点1 ──→ Master 节点
│
│ Ping ──→ (等待最多 30s)
│
├──── 收到 Pong → Master 正常
│
└──── 超时 → retryCount++
↓
继续重试或判定故障
2. 节点故障检测(NodesFaultDetection) #
节点A ──→ 节点B
│
│ Ping ──→ (等待最多 30s)
│
├──── 收到 Pong → 节点B 正常
│
└──── 超时 → retryCount++
↓
继续重试或判定故障
配置建议 #
⚠️ 重要提示 #
此配置项已被标记为弃用,建议保持默认值。
生产环境(默认) #
discovery.zen.fd.ping_timeout: 30s
建议: 保持默认值 30s。这是经过验证的标准配置。
高延迟网络 #
discovery.zen.fd.ping_timeout: 60s
建议: 增加到 45s-90s。网络延迟高时需要更长的超时时间。
跨地域部署 #
discovery.zen.fd.ping_timeout: 90s
建议: 增加到 60s-120s。跨地域部署时网络延迟和抖动更大。
快速故障检测 #
discovery.zen.fd.ping_timeout: 10s
建议: 减少到 10s-20s。当网络稳定且需要快速检测时使用。
代码示例 #
easysearch.yml 配置(已弃用) #
discovery:
zen:
fd:
ping_timeout: 30s # 默认值
完整的故障检测配置 #
discovery:
zen:
fd:
ping_interval: 1s # ping 间隔
ping_timeout: 30s # ping 超时
ping_retries: 3 # ping 重试次数
高延迟网络配置 #
discovery:
zen:
fd:
ping_interval: 2s
ping_timeout: 60s # 增加超时
ping_retries: 5
跨地域部署配置 #
discovery:
zen:
fd:
ping_interval: 3s
ping_timeout: 90s # 跨地域需要更长超时
ping_retries: 5
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
discovery.zen.fd.ping_interval | ping 发送间隔 | 1s |
discovery.zen.fd.ping_timeout | 单次 ping 超时 | 30s |
discovery.zen.fd.ping_retries | ping 重试次数 | 3 |
discovery.zen.ping_timeout | Zen 发现 ping 超时 | 3s |
与 discovery.zen.ping_timeout 的区别 #
discovery.zen.fd.ping_timeout (已弃用):
用于故障检测
默认 30s
检测节点是否存活
discovery.zen.ping_timeout (仍在使用):
用于 Zen 发现
默认 3s
节点加入集群时的超时
故障检测时间计算 #
故障检测总时间 = (ping_timeout + ping_interval) × ping_retries
默认配置:
= (30s + 1s) × 3 = 93 秒
高延迟网络配置:
= (60s + 2s) × 5 = 310 秒 (约 5 分钟)
快速检测配置:
= (10s + 0.5s) × 2 = 21 秒
超时设置指南 #
| 网络环境 | 推荐超时 | 说明 |
|---|---|---|
| 局域网 | 20-30s | 低延迟,标准设置 |
| 同城云 | 30-45s | 稳定云环境 |
| 跨地域 | 60-120s | 考虑网络延迟 |
| 不稳定网络 | 45-90s | 容忍网络波动 |
超时与网络延迟的关系 #
建议: ping_timeout ≥ 3 × 网络延迟
网络延迟 50ms:
ping_timeout = 3 × 50ms = 150ms
但最小建议不低于 10s(考虑 GC 等因素)
网络延迟 200ms:
ping_timeout = 3 × 200ms = 600ms
但建议至少 10-20s
网络延迟 2s (跨地域):
ping_timeout = 3 × 2s = 6s
建议至少 30-60s
使用场景 #
推荐保持默认的场景 #
- 标准数据中心: 网络稳定、延迟低
- 平衡性能和可靠性: 标准设置
- 生产环境: 经过验证的默认值
推荐增加的场景 #
- 跨地域部署: 网络延迟高
- 云环境: 虚拟网络延迟波动
- 高负载节点: GC 或高负载可能导致响应慢
推荐减少的场景 #
- 局域网: 网络延迟极低
- 快速检测: 需要快速发现故障
- 稳定环境: 节点响应时间一致
注意事项 #
已弃用: 此配置已被标记为弃用,建议关注新的发现机制。
与 ping_interval 的关系: 超时应远大于间隔,避免重叠。
考虑 GC 影响: JVM GC 停顿可能导致响应延迟,超时应足够长。
调试日志: 启用调试日志可以看到 ping 的详细信息:
[master] uses ping_interval [1s], ping_timeout [30s], ping_retries [3]动态更新: 此配置支持动态更新,无需重启节点。
监控建议: 监控 ping 超时频率,根据实际情况调整。
与集群规模的关系: 大集群中节点响应可能更慢,需要更长超时。





