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

配置项作用 #

thread_pool.fetch_shard_store.max 配置项用于控制分片存储元数据获取线程池的最大线程数

这是线程池能够创建的最大线程数量上限。

配置项属性 #

  • 配置路径: thread_pool.fetch_shard_store.max
  • 数据类型: Integer(整数)
  • 默认值: 2 × CPU核心数(受限于 2 到 Integer.MAX_VALUE)
  • 是否可选: 是
  • 作用域: NodeScope(节点级别)
  • 动态更新: 是(可以动态更新,无需重启)

配置项详解 #

工作机制 #

SCALING 线程池边界

线程池容量:
┌─────────────────────────────────────┐
│  Fetch Shard Store 线程池            │
├─────────────────────────────────────┤
│  核心线程: core (默认 1)             │
│  弹性线程: max - core                │
│  最大线程: max (2 × CPU核心数)       │
└─────────────────────────────────────┘


并发查询能力:
├── max = 16: 可同时查询 16 个节点
├── max = 32: 可同时查询 32 个节点
└── 决定存储信息获取速度

max 设置影响 #

max 值的并发影响

max = 8 (4核CPU):
├── 并发查询: 8 个节点
├── 迁移速度: 中等
└-- 适用: 中型集群


max = 16 (8核CPU):
├── 并发查询: 16 个节点
├── 迁移速度: 快
└-- 适用: 大型集群


max = 32 (16核CPU):
├── 并发查询: 32 个节点
├── 迁移速度: 很快
└-- 适用: 超大型集群

配置建议 #

默认配置(推荐) #

thread_pool:
  fetch_shard_store:
    # max 使用默认计算值

大型集群 #

thread_pool:
  fetch_shard_store:
    max: 32  # 增加最大值

超大型集群 #

thread_pool:
  fetch_shard_store:
    core: 4
    max: 64
    keep_alive: 10m

动态更新 #

PUT /_cluster/settings
{
  "transient": {
    "thread_pool.fetch_shard_store.max": 32
  }
}

相关配置 #

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

注意事项 #

  1. 默认值: 默认值为 2 × CPU核心数,动态计算。

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

  3. 并发能力: 决定同时可以查询多少个节点的存储信息。

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

  5. 集群规模: 根据集群规模调整。