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

配置项作用 #

thread_pool.fetch_shard_store.core 配置项用于控制分片存储元数据获取线程池的核心线程数

此线程池负责在分片迁移、恢复等操作中,异步获取各个节点的分片存储元数据信息。

配置项属性 #

  • 配置路径: thread_pool.fetch_shard_store.core
  • 数据类型: Integer(整数)
  • 默认值: 1
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 是(可以动态更新,无需重启)

配置项详解 #

工作机制 #

Fetch Shard Store 线程池用途

线程池类型: SCALING (可伸缩)


使用场景:

1. 分片迁移
   ├── 需要迁移分片
   ├── 查询源节点存储信息
   ├── 获取文件大小、修改时间
   └-- 确定迁移策略


2. 分片恢复
   ├── 需要恢复分片
   ├── 查询可用节点存储
   ├── 对比分片版本
   └-- 选择最佳恢复源


3. 存储信息查询
   ├── 获取分片文件列表
   ├── 检查磁盘使用情况
   ├── 验证数据完整性
   └-- 辅助决策


4. 集群平衡
   ├── 分析存储分布
   ├── 评估节点负载
   ├── 计算迁移需求
   └-- 执行平衡操作

与 Fetch Shard Started 的区别 #

两个线程池的对比

FetchShardStarted:
├── 用途: 获取分片启动状态
├── 时机: 集群启动/恢复时
├── 内容: 分片是否启动、版本号
├── 使用: GatewayAllocator
└-- 目标: 决定主分片位置


FetchShardStore:
├── 用途: 获取分片存储信息
├── 时机: 分片迁移/恢复时
├── 内容: 文件列表、大小、时间戳
├── 使用: 迁移/恢复决策
└-- 目标: 确定存储状态


配合使用:
├── Started: 决定谁来当主分片
├── Store: 决定如何迁移/恢复
└-- 两者协同完成集群管理

core 设置影响 #

core 值的影响分析

core = 1 (默认):
├── 资源占用: 最小 ✅
├── 处理能力: 标准
├── 迁移速度: 适中
└-- 适用: 大多数场景 ✅


core = 2-4:
├── 资源占用: 较小
├── 处理能力: 较高
├── 迁移速度: 快
└-- 适用: 频繁迁移场景


core > 4:
├── 资源占用: 中等
├── 处理能力: 高
├-- 迁移速度: 很快
└-- 适用: 大规模迁移 (谨慎)

配置建议 #

默认配置(推荐) #

thread_pool:
  fetch_shard_store:
    core: 1  # 默认值

建议: 大多数场景使用默认值。

频繁迁移场景 #

thread_pool:
  fetch_shard_store:
    core: 2
    max: 16

建议: 频繁进行分片迁移的场景。

大规模集群 #

thread_pool:
  fetch_shard_store:
    core: 4
    max: 32
    keep_alive: 5m

建议: 超大规模集群,需要快速获取存储信息。

动态更新 #

PUT /_cluster/settings
{
  "transient": {
    "thread_pool.fetch_shard_store.core": 2
  }
}

相关配置 #

配置项作用默认值
fetch_shard_store.core核心线程数1
fetch_shard_store.max最大线程数2 × CPU核心数
fetch_shard_store.keep_alive线程保活时间5m

注意事项 #

  1. 默认值: 默认值为 1,适用于大多数场景。

  2. 动态更新: 支持动态更新,无需重启。

  3. 与 Started 配合: 应与 fetch_shard_started 配合配置。

  4. 迁移影响: 影响分片迁移速度。

  5. 合理设置: 根据迁移频率调整。

  6. 监控建议: 监控分片迁移时间。

  7. 集群一致性: 建议集群中各节点保持一致。