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

配置项作用 #

cluster.info.update.timeout 配置项用于控制集群信息收集操作的超时时间。

当 InternalClusterInfoService 从集群中收集节点统计信息(NodeStats)和索引统计信息(IndicesStats)时,此配置限制了等待响应的最长时间。

配置项属性 #

  • 配置路径: cluster.info.update.timeout
  • 数据类型: TimeValue(时间值)
  • 默认值: 15s(15秒)
  • 是否可选: 是
  • 是否动态: 是(可动态更新,无需重启)

配置项详解 #

超时机制 #

主节点                        数据节点
    │                            │
    │ ──── NodeStats 请求 ──────>│
    │                            │
    │ <──── 响应 ─────────────────│  (等待最多 timeout)
    │                            │
    │ ──── IndicesStats 请求 ───>│
    │                            │
    │ <──── 响应 ─────────────────│  (等待最多 timeout)
    │                            │
    │  超时?                    │
    │  ↓                        │
    │ 记录警告,继续使用上次的   │
    │ 集群信息                   │

工作流程 #

  1. 发送请求: 主节点向所有数据节点请求统计信息
  2. 等待响应: 等待各节点返回节点统计和索引统计信息
  3. 超时检查: 如果在 timeout 时间内未收集完成,记录警告并使用缓存信息
  4. 更新缓存: 收集成功后更新集群信息缓存

收集的信息 #

信息类型说明
NodeStats节点级别的统计信息,包括磁盘使用情况、JVM、线程池等
IndicesStats索引级别的统计信息,包括分片大小、文档数量等

配置建议 #

生产环境(标准) #

cluster.info.update.timeout: 15s

建议: 保持默认值 15s。适用于大多数生产环境。

大型集群 #

cluster.info.update.timeout: 30s

建议: 增加到 30s-60s。当集群节点数量多或分片数量多时,收集统计信息需要更长时间。

高延迟网络环境 #

cluster.info.update.timeout: 30s

建议: 增加到 30s-45s。节点间网络延迟较高时,需要更长的超时时间。

性能优化环境 #

cluster.info.update.timeout: 10s

建议: 减少到 10s。在网络良好、集群规模小的情况下可以减少超时时间。

代码示例 #

easysearch.yml 配置 #

# 生产环境标准配置
cluster:
  info:
    update:
      interval: 30s
      timeout: 15s

大型集群配置 #

cluster:
  info:
    update:
      interval: 90s      # 增加更新间隔
      timeout: 45s       # 增加超时时间

高延迟网络配置 #

cluster:
  info:
    update:
      interval: 60s
      timeout: 60s       # 超时时间接近间隔时间

动态更新配置 #

# 通过 API 动态更新(无需重启)
PUT _cluster/settings
{
  "transient": {
    "cluster.info.update.timeout": "30s"
  }
}

相关配置 #

配置项作用默认值
cluster.info.update.interval信息更新间隔30s
cluster.routing.allocation.disk.threshold_enabled是否启用磁盘阈值检查true

配置配合原则 #

通常建议:

  • timeout < interval:确保单次收集能够在下次更新前完成
  • 典型配置:interval = 2 × timeout

例如:

  • 小型集群:interval: 30s, timeout: 10s
  • 标准集群:interval: 30s, timeout: 15s
  • 大型集群:interval: 90s, timeout: 45s

超时处理 #

当信息收集超时时:

超时发生
    ↓
记录警告日志
    ↓
使用上一次的集群信息缓存
    ↓
继续执行路由决策(可能使用过时数据)

警告日志示例:

Failed to update node information for ClusterInfoUpdateJob within 15s timeout
Failed to update indices information for ClusterInfoUpdateJob within 15s timeout

性能与可靠性权衡 #

timeout 设置优点缺点
较短(5-10s)快速发现响应慢的节点可能误判,导致信息收集失败
中等(15s)平衡响应时间和成功率标准设置
较长(30-60s)提高收集成功率慢节点会拖累整体更新速度

影响超时的因素 #

因素影响
集群节点数量节点越多,收集时间越长
分片数量分片越多,索引统计越耗时
节点负载高负载节点响应较慢
网络延迟节点间延迟影响响应时间
磁盘性能慢速磁盘影响统计信息收集

注意事项 #

  1. 动态配置: 可以通过集群设置 API 动态更新,无需重启节点。

  2. 超时后的行为: 超时不会导致节点故障,只是该次信息收集失败,会使用上次的缓存信息。

  3. 监控建议: 如果频繁出现超时警告,需要检查:

    • 节点负载是否过高
    • 网络是否存在问题
    • 是否需要增加超时时间
  4. 与间隔的关系: 确保 timeout 不要大于 interval,否则可能出现上一次收集还未完成,下一次就开始的情况。

  5. 仅影响主节点: 此配置只在主节点上执行,用于主节点收集集群信息。