配置项作用 #
discovery.zen.ping_timeout 配置项用于控制节点在发现集群主节点时的 ping 超时时间。
这是 Easysearch Zen 发现机制中的核心配置,决定了节点等待其他节点响应 ping 请求的最长时间。
配置项属性 #
- 配置路径:
discovery.zen.ping_timeout - 数据类型:
TimeValue(时间值) - 默认值:
3s(3秒) - 最小值:
> 0(正数) - 是否可选: 是
- 作用域: NodeScope(节点级别)
配置项详解 #
工作机制 #
节点发现流程
新节点启动
│
↓
读取配置的种子节点
│
↓
向所有种子节点发送 Ping
│
├──────── node1 ──→ Ping ──→ (等待最多 ping_timeout)
├──────── node2 ──→ Ping ──→ (等待最多 ping_timeout)
└──────── node3 ──→ Ping ──→ (等待最多 ping_timeout)
│
↓
收集响应
│
├──── < ping_timeout ──→ 收到响应
│ ↓
│ 根据响应确定主节点
│
└──── ≥ ping_timeout ──→ 超时
↓
重新尝试或失败
相关超时关系 #
ping_timeout 的级联关系
discovery.zen.ping_timeout = 3s (基础)
↓
discovery.zen.join_timeout = ping_timeout × 20 = 60s
↓
discovery.zen.fd.ping_timeout = 30s (故障检测,不同用途)
配置建议 #
生产环境(标准) #
discovery.zen.ping_timeout: 3s
建议: 保持默认值 3s。适用于大多数生产环境的网络条件。
高延迟网络 #
discovery.zen.ping_timeout: 5s
建议: 增加到 5s-10s。当网络延迟较高或跨地域部署时使用。
跨地域部署 #
discovery.zen.ping_timeout: 10s
建议: 增加到 10s-30s。跨地域或跨云部署时使用。
快速发现要求 #
discovery.zen.ping_timeout: 1s
建议: 减少到 1s-2s。当网络条件极佳且需要快速发现时使用。
代码示例 #
easysearch.yml 配置 #
discovery:
zen:
ping_timeout: 3s # 默认值
配合种子节点配置 #
discovery:
zen:
ping_timeout: 5s
ping_unicast:
hosts: ["master1:9300", "master2:9300"]
跨地域配置 #
discovery:
zen:
ping_timeout: 10s
ping_unicast:
hosts:
- "us-east.example.com:9300"
- "eu-west.example.com:9300"
高延迟网络配置 #
discovery:
zen:
ping_timeout: 15s
fd:
ping_timeout: 30s
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
discovery.zen.ping_timeout | 发现 ping 超时 | 3s |
discovery.zen.join_timeout | 加入超时 | ping_timeout × 20 |
discovery.zen.fd.ping_timeout | 故障检测 ping 超时 | 30s |
discovery.zen.fd.ping_interval | 故障检测 ping 间隔 | 1s |
与 fd.ping_timeout 的区别 #
discovery.zen.ping_timeout (3s):
用途: 节点发现阶段
场景: 节点启动时发现主节点
频率: 一次性操作
discovery.zen.fd.ping_timeout (30s):
用途: 运行时故障检测
场景: 定期检查节点是否存活
频率: 每秒执行
发现过程时间分析 #
理想情况(快速发现):
3 个种子节点,网络延迟 50ms
Ping node1: 50ms ✓
Ping node2: 50ms ✓
Ping node3: 50ms ✓
总耗时 ≈ 50ms(并行执行)
高延迟场景:
3 个种子节点,网络延迟 2s
Ping node1: 2s ✓
Ping node2: 2s ✓
Ping node3: 2s ✓
总耗时 ≈ 2s(并行执行)
部分超时:
3 个种子节点,网络延迟 4s
Ping node1: 4s ❌
Ping node2: 4s ❌
Ping node3: 4s ❌
总耗时 = 3s (超时)
无法发现任何节点 ❌
使用场景 #
推荐保持默认的场景 #
- 标准数据中心: 网络稳定、延迟低
- **同城部署: 节点在同一个地区
- **虚拟私有云: 稳定的云环境
推荐增加的场景 #
- 跨地域部署: 不同地区之间的部署
- 公网连接: 节点间通过公网通信
- 混合云环境: 跨多个云服务商
- 不稳定网络: 网络质量不稳定的场景
推荐减少的场景 #
- 本地网络: 局域网或数据中心内部
- 容器网络: 同一主机或 Kubernetes 集群
- 高带宽低延迟: 网络条件极佳
网络延迟参考 #
| 网络环境 | 典型延迟 | 推荐 ping_timeout |
|---|---|---|
| 同机房 | 1-2ms | 3s(默认) |
| 同城云 | 5-10ms | 3-5s |
| 跨地域 | 50-200ms | 5-10s |
| 跨公网 | 100-500ms | 10-30s |
注意事项 #
基础超时: 此配置是其他超时配置的基础值。
级联关系: 修改此值会影响
join_timeout等相关配置。与 fd.ping_timeout 区分: 两个超时用于不同的目的,不要混淆。
动态更新: 此配置支持动态更新,修改后立即生效。
网络测试: 在生产环境部署前,建议进行网络延迟测试。
监控建议: 监控节点发现过程的耗时和失败率。
批量节点: 当有多个种子节点时,最慢的一个决定总时间。
DNS 解析: 如果使用主机名而不是 IP,还需要考虑 DNS 解析时间。





