--- title: "故障检测Ping超时配置" date: 2026-03-15 lastmod: 2026-03-15 description: "discovery.zen.fd.ping_timeout 配置项用于控制故障检测中单次ping请求的超时时间(已弃用)。" tags: ["集群发现", "故障检测", "超时", "心跳"] summary: "配置项作用 # 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." --- ## 配置项作用 `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++ ↓ 继续重试或判定故障 ``` ## 配置建议 ## ⚠️ 重要提示 此配置项**已被标记为弃用**,建议保持默认值。 ## 生产环境(默认) ```yaml discovery.zen.fd.ping_timeout: 30s ``` **建议**: 保持默认值 `30s`。这是经过验证的标准配置。 ## 高延迟网络 ```yaml discovery.zen.fd.ping_timeout: 60s ``` **建议**: 增加到 `45s-90s`。网络延迟高时需要更长的超时时间。 ## 跨地域部署 ```yaml discovery.zen.fd.ping_timeout: 90s ``` **建议**: 增加到 `60s-120s`。跨地域部署时网络延迟和抖动更大。 ## 快速故障检测 ```yaml discovery.zen.fd.ping_timeout: 10s ``` **建议**: 减少到 `10s-20s`。当网络稳定且需要快速检测时使用。 ## 代码示例 ## easysearch.yml 配置(已弃用) ```yaml discovery: zen: fd: ping_timeout: 30s # 默认值 ``` ## 完整的故障检测配置 ```yaml discovery: zen: fd: ping_interval: 1s # ping 间隔 ping_timeout: 30s # ping 超时 ping_retries: 3 # ping 重试次数 ``` ## 高延迟网络配置 ```yaml discovery: zen: fd: ping_interval: 2s ping_timeout: 60s # 增加超时 ping_retries: 5 ``` ## 跨地域部署配置 ```yaml 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 或高负载可能导致响应慢 ## 推荐减少的场景 - **局域网**: 网络延迟极低 - **快速检测**: 需要快速发现故障 - **稳定环境**: 节点响应时间一致 ## 注意事项 1. **已弃用**: 此配置已被标记为弃用,建议关注新的发现机制。 2. **与 ping_interval 的关系**: 超时应远大于间隔,避免重叠。 3. **考虑 GC 影响**: JVM GC 停顿可能导致响应延迟,超时应足够长。 4. **调试日志**: 启用调试日志可以看到 ping 的详细信息: ``` [master] uses ping_interval [1s], ping_timeout [30s], ping_retries [3] ``` 5. **动态更新**: 此配置支持动态更新,无需重启节点。 6. **监控建议**: 监控 ping 超时频率,根据实际情况调整。 7. **与集群规模的关系**: 大集群中节点响应可能更慢,需要更长超时。