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

配置项作用 #

cluster.publish.info_timeout 配置项控制集群状态发布操作在记录 INFO 级别日志前的等待时间。当集群状态发布耗时超过此配置值时,会记录一条 INFO 级别的日志,提示集群状态发布较慢。此配置用于监控集群状态发布的性能。

配置项类型 #

该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。

默认值 #

10s

是否必需 #

可选配置项(有默认值)

取值范围 #

1ms ~ 正无穷

配置格式 #

# 默认配置
cluster.publish.info_timeout: 10s

# 更敏感的监控
cluster.publish.info_timeout: 5s

# 减少日志量
cluster.publish.info_timeout: 20s

# 不记录慢发布日志
cluster.publish.info_timeout: 1h

相关配置项 #

配置项默认值说明
cluster.publish.timeout30s发布超时时间
cluster.publish.info_timeout10s信息日志超时

工作原理 #

发布超时日志机制:

┌─────────────────────────────────────────────────────────────────┐
│                    发布日志记录                                  │
└─────────────────────────────────────────────────────────────────┘

开始发布集群状态
    │
    ├── 发布耗时 < info_timeout
    │   │
    │   └── 不记录日志
    │
    ├── info_timeout <= 耗时 < timeout
    │   │
    │   └── 记录 INFO 级别日志
    │       内容: "slow cluster state publishing took X seconds"
    │
    └── 发布耗时 >= timeout
        │
        └── 发布失败,记录 ERROR 日志

日志级别说明 #

耗时范围日志级别说明
< info_timeout-不记录日志
>= info_timeoutINFO慢发布警告
>= timeoutERROR发布超时

使用场景 #

1. 默认配置(推荐) #

cluster.publish.info_timeout: 10s

适用于大多数集群配置,平衡日志量和监控敏感度。

2. 敏感监控 #

cluster.publish.info_timeout: 5s

适用场景:

  • 需要密切关注集群状态
  • 性能调优阶段
  • 小规模集群

3. 减少日志 #

cluster.publish.info_timeout: 20s

适用场景:

  • 大规模集群
  • 网络延迟较高
  • 减少 INFO 日志量

4. 禁用慢发布日志 #

cluster.publish.info_timeout: 1h

适用场景:

  • 已知网络慢
  • 不需要慢发布警告

推荐设置建议 #

集群规模info_timeoutpublish.timeout说明
小型 (< 10 节点)5-10s30s敏感监控
中型 (10-50 节点)10s30s默认配置
大型 (> 50 节点)15-30s30-60s容忍延迟
跨地域20-30s60s高延迟环境

慢发布原因分析 #

常见慢发布原因:

1. 网络延迟
   - 跨地域部署
   - 网络拥堵
   - 带宽限制

2. 节点负载
   - CPU 使用率高
   - 内存压力大
   - GC 频繁

3. 集群状态大
   - 节点数量多
   - 索引数量多
   - 分片数量多

4. 磁盘 I/O
   - 慢速存储
   - I/O 争用

监控建议 #

# 查看当前配置
GET /_cluster/settings?filter_path=*.cluster.publish.info_timeout

# 查看集群状态发布日志
# grep "slow cluster state publishing" /path/to/logs

# 查看集群健康状态
GET /_cluster/health

# 监控集群状态更新
GET /_cluster/state

性能优化 #

如果频繁出现慢发布日志 #

  1. 检查网络

    # 测试节点间网络延迟
    ping <other-node-host>
    
  2. 增加 info_timeout

    cluster.publish.info_timeout: 20s
    
  3. 检查集群状态大小

    # 查看集群状态大小
    GET /_cluster/state/_all
    
  4. 优化集群

    • 减少不必要的索引
    • 清理已删除的索引
    • 优化分片数量

日志示例 #

[INFO ][cluster.apiservice ] slow cluster state publishing took 12.3s
    cluster_uuid: xxx-xxx-xxx
    node_count: 50
    index_count: 200
    shard_count: 1000

注意事项 #

  1. 静态配置:修改需要重启节点
  2. 仅日志:此配置仅影响日志记录,不影响发布操作
  3. 与 timeout 配合:info_timeout 应小于 publish.timeout
  4. 监控工具:可作为性能监控的指标
  5. 合理设置:设置过小会产生大量日志