--- title: "Fetch Shard Store 线程池核心大小配置" date: 2026-01-11 lastmod: 2026-01-11 description: "thread_pool.fetch_shard_store.core 配置项用于控制分片存储元数据获取线程池的核心线程数。" tags: ["线程池", "分片存储", "集群恢复", "ThreadPool"] summary: "配置项作用 # 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` 配置项用于控制**分片存储元数据获取线程池的核心线程数**。 此线程池负责在分片迁移、恢复等操作中,异步获取各个节点的分片存储元数据信息。 ## 配置项属性 - **配置路径**: `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: ├── 资源占用: 中等 ├── 处理能力: 高 ├-- 迁移速度: 很快 └-- 适用: 大规模迁移 (谨慎) ``` ## 配置建议 ## 默认配置(推荐) ```yaml thread_pool: fetch_shard_store: core: 1 # 默认值 ``` **建议**: 大多数场景使用默认值。 ## 频繁迁移场景 ```yaml thread_pool: fetch_shard_store: core: 2 max: 16 ``` **建议**: 频繁进行分片迁移的场景。 ## 大规模集群 ```yaml thread_pool: fetch_shard_store: core: 4 max: 32 keep_alive: 5m ``` **建议**: 超大规模集群,需要快速获取存储信息。 ## 动态更新 ```json 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. **集群一致性**: 建议集群中各节点保持一致。