配置项作用 #
discovery.zen.commit_timeout 配置项用于设置主节点等待其他主节点确认(ACK)集群状态提交的超时时间。
当主节点发布集群状态变更后,需要等待足够数量的主节点确认才能提交。如果在此时间内未收到足够的确认,变更将被拒绝。
配置项属性 #
- 配置路径:
discovery.zen.commit_timeout - 数据类型:
TimeValue(时间值) - 默认值:
30s(30秒) - 是否可选: 是
- 弃用状态: ⚠️ 已弃用
配置项详解 #
工作机制 #
集群状态提交流程
主节点
│
↓
发布集群状态变更
│
├──→ 主节点2 ──── ACK ──┐
├──→ 主节点3 ──── ACK ──┤
└──→ 主节点4 ──────┐ │
│ │
等待足够 ACK │
(commit_timeout)
│ │
┌─────┴─────┘
│
├──── 足够 ACK
│ ↓
│ 提交成功 ✅
│
└──── 超时
↓
提交失败 ❌
提交确认机制 #
minimum_master_nodes = 2
需要至少 2 个主节点确认
主节点1(发布者)
│
├───→ 主节点2 ──── ACK ✓
│
├───→ 主节点3 ──── ACK ✓
│
└───→ 主节点4 ──── 超时...
结果: 收到 2 个 ACK
达到 minimum_master_nodes
提交成功 ✅
配置建议 #
⚠️ 重要提示 #
此配置项已被标记为弃用,建议使用 discovery.zen.publish_timeout 替代。
生产环境(默认) #
discovery.zen.commit_timeout: 30s
建议: 保持默认值或使用 publish_timeout。适用于大多数生产环境。
高延迟网络 #
discovery.zen.commit_timeout: 60s
建议: 增加到 45s-90s。当主节点间网络延迟较高时使用。
快速故障检测 #
discovery.zen.commit_timeout: 15s
建议: 减少到 10s-20s。当需要快速发现网络问题时使用。
代码示例 #
easysearch.yml 配置(已弃用) #
discovery:
zen:
commit_timeout: 30s # 默认值(已弃用)
推荐的替代配置 #
discovery:
zen:
publish_timeout: 30s # 使用新的配置项
高延迟网络配置 #
discovery:
zen:
commit_timeout: 60s # 已弃用
# 或使用
publish_timeout: 60s # 推荐
ping_timeout: 10s
相关配置 #
| 配置项 | 状态 | 作用 | 默认值 |
|---|---|---|---|
discovery.zen.commit_timeout | ⚠️ 已弃用 | 提交超时 | 30s |
discovery.zen.publish_timeout | ✅ 推荐 | 发布超时 | 30s |
discovery.zen.ping_timeout | ✅ 有效 | ping 超时 | 3s |
配置关系 #
commit_timeout 默认值来源于 publish_timeout
如果配置了 commit_timeout:
使用配置的值
如果未配置:
使用 publish_timeout 的值
使用场景 #
原本的使用场景 #
此配置原用于控制集群状态变更的提交流程:
- 创建索引: 等待主节点确认索引元数据
- 节点加入: 等待确认新节点加入集群
- 分片分配: 等待确认分片分配方案
- 集群设置: 等待确认集群配置变更
超时影响 #
超时发生的后果
集群状态变更
↓
等待 commit_timeout
↓
超时未收到足够 ACK
↓
变更被拒绝
↓
主节点重新尝试
↓
可能影响集群稳定性
故障处理 #
常见超时原因 #
| 原因 | 解决方案 |
|---|---|
| 网络延迟 | 增加 commit_timeout |
| 主节点负载高 | 优化集群或增加超时 |
| minimum_master_nodes 过高 | 调整为合理值 |
| JVM GC 停顿 | 优化 JVM 设置 |
监控指标 #
# 查看集群状态提交统计
GET _cluster/health
# 查看节点信息
GET _nodes/stats
# 查看待处理的集群状态
GET _cluster/state
注意事项 #
已弃用: 此配置已被标记为弃用,建议迁移到
publish_timeout。与 publish_timeout 的关系:
commit_timeout的默认值来源于publish_timeout。动态更新: 此配置支持动态更新,但建议使用新配置。
minimum_master_nodes: 确保此值设置正确,影响需要多少 ACK。
网络考虑: 根据主节点间的网络延迟调整超时值。
监控建议: 监控集群状态变更的延迟和失败率。
日志分析: 超时事件会记录在日志中,有助于诊断问题。





