配置项作用 #
thread_pool.search_throttled 相关配置项控制用于执行节流搜索操作的线程池。节流搜索是指那些被标记为低优先级或对系统资源敏感的搜索请求,这些搜索会被分配到专用的节流线程池中,避免影响正常的搜索操作。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
thread_pool.search_throttled.size: 1
thread_pool.search_throttled.max_queue_size: 100
是否必需 #
可选配置项(有默认值)
配置格式 #
# 默认配置
thread_pool.search_throttled.size: 1
thread_pool.search_throttled.queue_size: 100
# 增加线程数
thread_pool.search_throttled.size: 2
thread_pool.search_throttled.queue_size: 200
# 增加队列大小
thread_pool.search_throttled.size: 1
thread_pool.search_throttled.queue_size: 500
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
thread_pool.search_throttled.size | 1 | 线程池大小 |
thread_pool.search_throttled.max_queue_size | 100 | 最大队列大小 |
thread_pool.search_throttled.min_queue_size | 100 | 最小队列大小 |
thread_pool.search_throttled.target_response_time | 1s | 目标响应时间 |
线程池类型 #
类型: FIXED_AUTO_QUEUE_SIZE (固定自适应队列大小)
特点:
- 固定数量的线程(默认 1 个)
- 自适应队列大小
- 根据响应时间动态调整
- 用于低优先级搜索
工作原理 #
节流搜索处理流程:
┌─────────────────────────────────────────────────────────────────┐
│ 节流搜索处理 │
└─────────────────────────────────────────────────────────────────┘
节流搜索请求到达
│
├── 后台任务
├── 批量操作
├── 低优先级搜索
└── 资源敏感查询
│
▼
检查线程池状态
│
├── 线程空闲
│ │
│ └── 立即处理
│
└── 线程繁忙
│
└── 加入自适应队列等待
自适应队列机制 #
队列大小根据响应时间动态调整:
target_response_time = 1s
min_queue_size = 100
max_queue_size = 100
响应时间 < target:
- 队列大小增长
- 允许更多排队请求
响应时间 > target:
- 队列大小收缩
- 限制排队请求
使用场景 #
1. 默认配置(推荐) #
thread_pool.search_throttled.size: 1
thread_pool.search_throttled.queue_size: 100
适用于大多数集群配置。
2. 更多节流搜索 #
thread_pool.search_throttled.size: 2
thread_pool.search_throttled.max_queue_size: 200
thread_pool.search_throttled.min_queue_size: 200
适用场景:
- 大量后台搜索任务
- 批量数据导出
- 定时报告生成
3. 限制节流搜索 #
thread_pool.search_throttled.size: 1
thread_pool.search_throttled.max_queue_size: 50
thread_pool.search_throttled.min_queue_size: 50
适用场景:
- 严格控制资源使用
- 优先保证正常搜索
- 减少后台任务影响
推荐设置建议 #
| 场景 | 推荐线程数 | 推荐队列大小 | 说明 |
|---|---|---|---|
| 默认 | 1 | 100 | 标准配置 |
| 后台任务多 | 2 | 200-500 | 更多容量 |
| 资源敏感 | 1 | 50 | 限制影响 |
| 大量导出 | 2-4 | 500-1000 | 高吞吐量 |
监控建议 #
# 查看线程池状态
GET /_cat/thread_pool/search_throttled?v
# 查看详细统计
GET /_nodes/stats/thread_pool/search_throttled
# 查看当前队列大小
GET /_nodes/stats/thread_pool?filter_path=nodes.*.thread_pool.search_throttled
与普通搜索线程池的区别 #
| 特性 | thread_pool.search | thread_pool.search_throttled |
|---|---|---|
| 用途 | 正常搜索请求 | 低优先级/节流搜索 |
| 默认线程数 | processors | 1 |
| 队列类型 | 自适应 | 自适应 |
| 响应时间要求 | 快速响应 | 可容忍延迟 |
| 资源占用 | 高优先级 | 低优先级 |
节流搜索的典型场景 #
适合节流线程池的操作:
1. 后台任务
- 定时数据统计
- 报告生成
- 数据分析
2. 批量操作
- 批量数据导出
- 批量数据查询
- 批量聚合计算
3. 低优先级搜索
- 非关键查询
- 数据探索
- 测试查询
注意事项 #
- 静态配置:修改需要重启节点
- 默认单线程:默认只有 1 个线程
- 低优先级:节流搜索优先级低于正常搜索
- 自适应队列:队列大小根据响应时间动态调整
- 避免过度使用:过多的节流搜索可能仍然影响系统性能
- 队列满会拒绝请求:合理设置队列大小





