配置项作用 #
thread_pool.async_search_generic.core 配置项用于控制异步搜索通用线程池的核心线程数。
核心线程数是线程池中始终保持活跃的线程数量,即使没有任务执行时也不会被回收。异步搜索功能使用此线程池执行管理操作。
配置项属性 #
- 配置路径:
thread_pool.async_search_generic.core - 数据类型:
Integer(整数) - 默认值:
1 - 是否可选: 是
- 作用域: NodeScope(节点级别)
- 动态更新: 否(需要重启节点生效)
配置项详解 #
工作机制 #
SCALING 线程池架构
线程池类型: SCALING (可伸缩)
┌─────────────────────────────────────┐
│ 异步搜索通用线程池 │
├─────────────────────────────────────┤
│ 核心线程: core (默认 1) │
│ ┌───┐ │
│ │ 1 │ ← 始终保持活跃 │
│ └───┘ │
│ │
│ 弹性线程: max - core │
│ ┌───┬───┬───┬───┐ │
│ │ 2 │ 3 │ 4 │...│ ← 按需创建 │
│ └───┴───┴───┴───┘ │
│ │
│ 最大线程: max (动态计算) │
└─────────────────────────────────────┘
线程行为:
核心线程 (core):
├── 数量: 固定
├── 状态: 始终活跃
├── 回收: 永不回收 ✅
└-- 用途: 保证基本处理能力
弹性线程 (core 到 max):
├── 数量: 动态调整
├── 创建: 任务增加时
├── 回收: 空闲 keep_alive 后 ⏱️
└-- 用途: 应对负载波动
工作流程:
任务到达
│
├── 活跃线程 < core?
│ ├── 是 → 使用核心线程 ✅
│ └── 否 → 继续
├── 活跃线程 < max?
│ ├── 是 → 创建新线程 ✅
│ └── 否 → 队列等待 ⏳
└── 任务完成
├── 线程 > core?
│ ├── 空闲 > keep_alive?
│ │ ├── 是 → 回收线程
│ │ └── 否 → 保持活跃
└── 否 → 保持活跃
max 动态计算 #
最大线程数计算公式
max = min(2 × availableProcessors, min(128, 512))
实际值:
1 核 CPU:
├── 2 × 1 = 2
├── min(2, 128) = 2
├── min(2, 512) = 2
└-- max = 2
4 核 CPU:
├── 2 × 4 = 8
├── min(8, 128) = 8
├── min(8, 512) = 8
└-- max = 8
8 核 CPU:
├── 2 × 8 = 16
├── min(16, 128) = 16
├── min(16, 512) = 16
└-- max = 16
16 核 CPU:
├── 2 × 16 = 32
├── min(32, 128) = 32
├── min(32, 512) = 32
└-- max = 32
32 核 CPU:
├── 2 × 32 = 64
├── min(64, 128) = 64
├── min(64, 512) = 64
└-- max = 64
64 核 CPU:
├── 2 × 64 = 128
├── min(128, 128) = 128
├── min(128, 512) = 128
└-- max = 128 (上限)
超多核 CPU (>64 核):
├── 计算值 > 128
├── 限制: 128
└-- max = 128 (硬上限)
异步搜索任务类型 #
线程池处理的任务
1. 清理过期上下文
├── 删除过期的异步搜索
├── 释放相关资源
└-- 定期任务
2. 清理持久化响应
├── 删除过期的搜索结果
├── 清理存储
└-- 定期任务
3. 管理操作
├── 创建异步搜索
├── 查询状态
├── 删除搜索
└-- 用户请求
4. 监控和统计
├── 收集指标
├── 更新状态
└-- 后台任务
core 设置影响 #
core 值的影响分析
core = 1 (默认):
├── 基本处理: 保证 ✅
├── 资源占用: 最小 ✅
├── 突发响应: 稍慢 ⚠️
├-- 适用: 默认场景
core = 2-4:
├── 基本处理: 良好 ✅
├── 资源占用: 较小 ✅
├── 突发响应: 快 ✅
└-- 适用: 中等负载
core = 4-8:
├── 基本处理: 优秀 ✅
├── 资源占用: 中等
├-- 突发响应: 很快 ✅
└-- 适用: 高负载
core > 8:
├── 基本处理: 过度
├── 资源占用: 较高 ⚠️
├── 突发响应: 无明显提升
└-- 不推荐 ❌
配置建议 #
默认配置 #
thread_pool:
async_search_generic:
core: 1 # 默认值
建议: 大多数场景使用默认值。
中型集群 #
thread_pool:
async_search_generic:
core: 2
建议: 中等负载的集群使用。
大型集群 #
thread_pool:
async_search_generic:
core: 4
建议: 高负载或频繁使用异步搜索的集群。
极高性能需求 #
thread_pool:
async_search_generic:
core: 8
keep_alive: 1m
建议: 异步搜索密集型应用。
代码示例 #
基础配置 #
thread_pool:
async_search_generic:
core: 1
完整异步搜索线程池配置 #
thread_pool:
async_search_generic:
core: 2
max: 32
keep_alive: 30m
高性能配置 #
thread_pool:
async_search_generic:
core: 4
max: 64
keep_alive: 10m
创建异步搜索 #
POST /my_index/_async_search
{
"query": {
"match": { "title": "search" }
},
"wait_for_completion_timeout": "2s"
}
查询异步搜索状态 #
GET /_async_search/<id>
删除异步搜索 #
DELETE /_async_search/<id>
相关配置 #
| 配置项 | 作用 | 默认值 |
|---|---|---|
async_search_generic.core | 核心线程数 | 1 |
async_search_generic.max | 最大线程数 | 动态计算 |
async_search_generic.keep_alive | 线程保活时间 | 30m |
注意事项 #
默认值: 默认值为
1,适用于大多数场景。非动态更新: 需要重启节点才能生效。
线程池类型: SCALING 类型,线程数可动态调整。
与 max 配合: core 应小于 max。
资源占用: core 线程始终占用资源。
突发流量: core 越大,应对突发越快。
合理设置: 不建议超过 CPU 核心数。
异步搜索特性: 仅影响异步搜索功能。
测试验证: 重启后应验证功能正常。
集群一致性: 建议集群中各节点保持一致。
使用场景 #
场景选择指南
偶尔使用异步搜索:
├── core: 1
├── max: 自动
├── 特点: 异步搜索不频繁
└-- 推荐: 默认配置
中等频率异步搜索:
├── core: 2
├── max: 自动
├── 特点: 定期使用异步搜索
└-- 推荐: 略微增加
高频异步搜索:
├── core: 4
├── max: 增加
├-- 特点: 大量异步搜索
└-- 推荐: 专门优化
异步搜索主要负载:
├── core: 4-8
├── max: 显著增加
├-- 特点: 异步搜索是主要功能
└-- 推荐: 重点优化
性能调优 #
core 值调优指南
调优原则:
├── 从默认值开始
├── 根据实际负载调整
├── 监控线程池状态
├── 测试不同配置
└-- 选择最佳值
性能指标:
├── 异步搜索响应时间
├── 线程池活跃线程数
├── 任务等待时间
└-- 资源使用率
调整策略:
响应慢:
├── 检查活跃线程
├── 是否经常需要创建新线程
├── 增加 core
└-- 减少线程创建开销
资源充足:
├── 异步搜索频繁
├── CPU 有余力
├-- 适度增加 core
└-- 提高响应速度
资源紧张:
├── 保持 core 较小
├── 依赖弹性线程
├── 减少 keep_alive
└-- 节省资源
最佳实践 #
异步搜索线程池最佳实践
1. 默认配置起步
├── 从 core: 1 开始
├── 观察实际负载
├── 根据需要调整
└-- 避免过度配置
2. 监控线程池
├── 监控活跃线程数
├── 监控队列长度
├── 监控任务执行时间
└-- 定期审查配置
3. 合理设置 core
├── 默认值通常足够
├── 频繁使用时可增加
├── 不建议超过 8
└-- 配合 max 调整
4. 配置 keep_alive
├── 默认 30 分钟
├── 高负载时减少
├── 低负载时增加
└-- 平衡资源
5. 集群一致性
├── 保持各节点一致
├── 避免配置差异
├── 统一更新配置
└-- 定期审查





