--- title: "集群信息更新超时配置" date: 2026-03-01 lastmod: 2026-03-01 description: "cluster.info.update.timeout 配置项用于控制集群信息收集操作的超时时间,确保在节点响应慢时能够及时终止收集过程。" tags: ["集群", "信息更新", "超时", "主节点", "磁盘监控"] summary: "配置项作用 # cluster.info.update.timeout 配置项用于控制集群信息收集操作的超时时间。 当 InternalClusterInfoService 从集群中收集节点统计信息(NodeStats)和索引统计信息(IndicesStats)时,此配置限制了等待响应的最长时间。 配置项属性 # 配置路径: cluster.info.update.timeout 数据类型: TimeValue(时间值) 默认值: 15s(15秒) 是否可选: 是 是否动态: 是(可动态更新,无需重启) 配置项详解 # 超时机制 # 主节点 数据节点 │ │ │ ──── NodeStats 请求 ──────>│ │ │ │ <──── 响应 ─────────────────│ (等待最多 timeout) │ │ │ ──── IndicesStats 请求 ───>│ │ │ │ <──── 响应 ─────────────────│ (等待最多 timeout) │ │ │ 超时? │ │ ↓ │ │ 记录警告,继续使用上次的 │ │ 集群信息 │ 工作流程 # 发送请求: 主节点向所有数据节点请求统计信息 等待响应: 等待各节点返回节点统计和索引统计信息 超时检查: 如果在 timeout 时间内未收集完成,记录警告并使用缓存信息 更新缓存: 收集成功后更新集群信息缓存 收集的信息 # 信息类型 说明 NodeStats 节点级别的统计信息,包括磁盘使用情况、JVM、线程池等 IndicesStats 索引级别的统计信息,包括分片大小、文档数量等 配置建议 # 生产环境(标准) # cluster." --- ## 配置项作用 `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 | 索引级别的统计信息,包括分片大小、文档数量等 | ## 配置建议 ## 生产环境(标准) ```yaml cluster.info.update.timeout: 15s ``` **建议**: 保持默认值 `15s`。适用于大多数生产环境。 ## 大型集群 ```yaml cluster.info.update.timeout: 30s ``` **建议**: 增加到 `30s-60s`。当集群节点数量多或分片数量多时,收集统计信息需要更长时间。 ## 高延迟网络环境 ```yaml cluster.info.update.timeout: 30s ``` **建议**: 增加到 `30s-45s`。节点间网络延迟较高时,需要更长的超时时间。 ## 性能优化环境 ```yaml cluster.info.update.timeout: 10s ``` **建议**: 减少到 `10s`。在网络良好、集群规模小的情况下可以减少超时时间。 ## 代码示例 ## easysearch.yml 配置 ```yaml # 生产环境标准配置 cluster: info: update: interval: 30s timeout: 15s ``` ## 大型集群配置 ```yaml cluster: info: update: interval: 90s # 增加更新间隔 timeout: 45s # 增加超时时间 ``` ## 高延迟网络配置 ```yaml cluster: info: update: interval: 60s timeout: 60s # 超时时间接近间隔时间 ``` ## 动态更新配置 ```bash # 通过 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. **仅影响主节点**: 此配置只在主节点上执行,用于主节点收集集群信息。