📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

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_intervalping 发送间隔1s
discovery.zen.fd.ping_timeout单次 ping 超时30s
discovery.zen.fd.ping_retriesping 重试次数3
discovery.zen.ping_timeoutZen 发现 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. 与集群规模的关系: 大集群中节点响应可能更慢,需要更长超时。