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

配置项作用 #

cluster.snapshot.info.max_concurrent_fetches 配置项用于控制从快照仓库并发获取分片大小信息的最大请求数量

在快照恢复过程中,节点需要获取快照中每个分片的大小信息,此配置控制同时进行多少个并发获取请求。

配置项属性 #

  • 配置路径: cluster.snapshot.info.max_concurrent_fetches
  • 数据类型: integer
  • 默认值: 5
  • 最小值: 1
  • 是否可选: 是
  • 是否动态: 是(支持动态更新)

配置项详解 #

工作机制 #

快照恢复流程

需要获取分片大小信息的分片列表
    │
    ↓
max_concurrent_fetches = 5
    │
    ↓
并发控制
    │
    ├── 请求 1 ──→ 快照仓库
    ├── 请求 2 ──→ 快照仓库
    ├── 请求 3 ──→ 快照仓库
    ├── 请求 4 ──→ 快照仓库
    └── 请求 5 ──→ 快照仓库
    │
    ↓
请求完成后继续处理剩余分片

并发管理 #

分片获取队列

unknownShards: [分片1, 分片2, 分片3, ..., 分片50]
    │
    ↓
计算本次并发数 = min(剩余分片数, max_concurrent_fetches)
    │
    ↓
启动并发请求
    │
    ├── activeFetches++(启动请求时)
    └── activeFetches--(完成请求时)
    │
    ↓
继续处理下一个分片

配置建议 #

生产环境(标准) #

cluster.snapshot.info.max_concurrent_fetches: 5

建议: 保持默认值 5。适用于大多数生产环境。

高性能仓库 #

cluster.snapshot.info.max_concurrent_fetches: 10

建议: 增加到 10-20。当快照仓库性能强劲且网络带宽充足时使用。

低性能仓库 #

cluster.snapshot.info.max_concurrent_fetches: 2

建议: 减少到 2-3。当快照仓库性能较弱或网络延迟高时使用。

大规模恢复 #

cluster.snapshot.info.max_concurrent_fetches: 15

建议: 增加到 15-20。当需要恢复大量分片且仓库性能足够时使用。

代码示例 #

easysearch.yml 配置 #

cluster:
  snapshot:
    info:
      max_concurrent_fetches: 5  # 默认值

高性能环境配置 #

cluster:
  snapshot:
    info:
      max_concurrent_fetches: 10  # 更高的并发

动态更新配置 #

# 通过 API 动态更新并发数
PUT _cluster/settings
{
  "transient": {
    "cluster.snapshot.info.max_concurrent_fetches": 8
  }
}

完整的快照配置 #

cluster:
  snapshot:
    info:
      max_concurrent_fetches: 5

相关配置 #

配置项作用默认值
cluster.snapshot.info.max_concurrent_fetches并发获取分片信息5
snapshots.infos.max_concurrent_fetches同上(别名)-

性能影响分析 #

并发设置优点缺点
较低(1-2)减少仓库压力恢复速度慢
中等(5)平衡速度和压力标准设置
较高(10-20)加快恢复速度可能过载仓库

瓶颈分析 #

恢复速度瓶颈分析

如果 max_concurrent_fetches 设置过低:
    ↓
并发请求不足
    ↓
等待请求完成
    ↓
恢复速度受限 ❌

如果 max_concurrent_fetches 设置过高:
    ↓
大量并发请求
    ↓
仓库性能或网络成为瓶颈
    ↓
请求排队或超时 ❌

使用场景 #

推荐提高并发的场景 #

  • 高性能仓库: SSD 存储、本地文件系统
  • 高速网络: 低延迟、高带宽
  • 大规模恢复: 需要恢复大量分片
  • 时间敏感: 需要尽快完成恢复

推荐降低并发的场景 #

  • 低性能仓库: 网络存储(如 S3、NFS)
  • 有限带宽: 网络带宽受限
  • 共享仓库: 多个集群共享同一仓库
  • 不稳定网络: 网络连接不稳定

恢复过程示例 #

标准并发(默认) #

50 个分片需要恢复,max_concurrent_fetches = 5

批次 1: 分片 1-5   (5 个并发)
批次 2: 分片 6-10  (5 个并发)
...
批次 10: 分片 46-50 (5 个并发)

总时间 = 10 批 × 平均单批时间

高并发配置 #

50 个分片需要恢复,max_concurrent_fetches = 10

批次 1: 分片 1-10  (10 个并发)
批次 2: 分片 11-20 (10 个并发)
批次 3: 分片 21-30 (10 个并发)
批次 4: 分片 31-40 (10 个并发)
批次 5: 分片 41-50 (10 个并发)

总时间 = 5 批 × 平均单批时间
(约快一倍,取决于仓库性能)

注意事项 #

  1. 动态更新: 此配置支持动态更新,修改后立即生效。

  2. 仓库类型影响: 不同类型的快照仓库(本地文件、S3、HDFS 等)有不同的性能特征。

  3. 网络因素: 与快照仓库之间的网络延迟和带宽会影响最佳并发数。

  4. 监控建议: 监控恢复操作的完成时间和成功率,根据实际情况调整。

  5. 资源限制: 考虑仓库服务的最大并发连接限制。

  6. 与恢复并发的区别: 此配置只控制获取分片信息的并发,不控制实际的分片数据恢复并发。

  7. 测试验证: 在生产环境调整前,建议在测试环境中验证配置的效果。