配置项作用 #
thread_pool.analyze 相关配置项控制用于执行分析操作的线程池。分析操作包括索引分析请求、字段值分析等功能。该线程池采用固定大小线程池类型。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
thread_pool.analyze.size: 8
thread_pool.analyze.queue_size: 256
是否必需 #
可选配置项(有默认值)
配置格式 #
# 默认配置
thread_pool.analyze.size: 8
thread_pool.analyze.queue_size: 256
# 增加线程数
thread_pool.analyze.size: 16
thread_pool.analyze.queue_size: 512
# 减少线程数
thread_pool.analyze.size: 4
thread_pool.analyze.queue_size: 128
# 无界队列(不推荐)
thread_pool.analyze.queue_size: -1
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
thread_pool.analyze.size | 8 | 线程池大小 |
thread_pool.analyze.queue_size | 256 | 队列大小 |
线程池类型 #
类型: FIXED (固定线程池)
特点:
- 固定数量的线程
- 有界队列
- 适用于可预测的负载
工作原理 #
分析请求处理流程:
┌─────────────────────────────────────────────────────────────────┐
│ 分析请求处理 │
└─────────────────────────────────────────────────────────────────┘
分析请求到达
│
▼
检查线程池状态
│
├── 有空闲线程
│ │
│ └── 立即处理
│
├── 线程繁忙,队列未满
│ │
│ └── 加入队列等待
│
└── 队列已满
│
└── 拒绝请求
使用场景 #
1. 默认配置(推荐) #
thread_pool.analyze.size: 8
thread_pool.analyze.queue_size: 256
适用于大多数集群配置。
2. 高频分析场景 #
thread_pool.analyze.size: 16
thread_pool.analyze.queue_size: 512
适用场景:
- 频繁使用分析 API
- 大量字段分析请求
- 高并发分析需求
3. 资源受限 #
thread_pool.analyze.size: 4
thread_pool.analyze.queue_size: 128
适用场景:
- CPU 资源有限
- 分析请求较少
- 保护系统资源
4. CPU 密集型工作负载 #
# 设置为 CPU 核心数
thread_pool.analyze.size: ${processors:}
thread_pool.analyze.queue_size: 512
推荐设置建议 #
| CPU 核心数 | 推荐线程数 | 推荐队列大小 | 说明 |
|---|---|---|---|
| 4-8 | 4-8 | 128-256 | 小型节点 |
| 8-16 | 8-12 | 256-512 | 中型节点 |
| 16-32 | 12-16 | 512-1024 | 大型节点 |
| 32+ | 16-24 | 1024+ | 高性能节点 |
监控建议 #
# 查看线程池状态
GET /_cat/thread_pool/analyze?v
# 查看详细统计
GET /_nodes/stats/thread_pool/analyze
# 查看节点信息
GET /_nodes/hot_threads
性能影响 #
线程数过小(4) #
优点:
✓ 节省 CPU 资源
✓ 减少上下文切换
缺点:
✗ 分析请求排队
✗ 响应时间增加
✗ 可能拒绝请求
线程数过大(32) #
优点:
✓ 高并发处理能力
✓ 响应时间短
缺点:
✗ 消耗大量 CPU
✗ 上下文切换频繁
✗ 可能影响其他操作
队列大小影响 #
小队列(128):
- 快速失败,避免请求堆积
- 适合低延迟场景
- 可能拒绝有效请求
大队列(1024):
- 缓冲更多请求
- 适合突发流量
- 可能增加延迟
故障排查 #
分析请求被拒绝 #
# 检查线程池状态
GET /_cat/thread_pool/analyze?v
# 查看 rejected 计数
# 如果 rejected 持续增加,说明线程池过载
响应时间慢 #
- 检查队列积压
- 增加线程数
- 检查 CPU 使用率
- 分析慢查询
CPU 使用率高 #
- 减少线程数
- 限制并发分析请求
- 检查是否有异常分析请求
注意事项 #
- 静态配置:修改需要重启节点
- CPU 密集型:分析操作是 CPU 密集型任务
- 队列满会拒绝请求:合理设置队列大小
- 与 CPU 核心数相关:线程数不应超过 CPU 核心数太多
- 影响其他操作:过多分析线程可能影响查询和写入性能





