配置项作用 #
thread_pool.get 相关配置项控制用于处理 GET 请求的线程池。GET 请求包括单文档查询(如 GET 操作)等获取数据的操作。该线程池采用固定大小线程池类型,线程数默认为处理器核心数。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
thread_pool.get.size: 分配的处理器数(通常为 CPU 核心数)
thread_pool.get.queue_size: 1000
是否必需 #
可选配置项(有默认值)
配置格式 #
# 默认配置(使用 CPU 核心数)
thread_pool.get.size: ${processors:}
thread_pool.get.queue_size: 1000
# 显式设置线程数
thread_pool.get.size: 16
thread_pool.get.queue_size: 1000
# 增加队列大小
thread_pool.get.size: 16
thread_pool.get.queue_size: 2000
# 减少线程数
thread_pool.get.size: 8
thread_pool.get.queue_size: 1000
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
thread_pool.get.size | ${processors:} | 线程池大小 |
thread_pool.get.queue_size | 1000 | 队列大小 |
线程池类型 #
类型: FIXED (固定线程池)
特点:
- 固定数量的线程
- 有界队列
- 线程数默认为 CPU 核心数
- 适用于文档 GET 操作
工作原理 #
GET 请求处理流程:
┌─────────────────────────────────────────────────────────────────┐
│ GET 请求处理 │
└─────────────────────────────────────────────────────────────────┘
GET 请求到达(单文档查询)
│
▼
检查线程池状态
│
├── 有空闲线程
│ │
│ └── 立即处理请求
│
├── 线程繁忙,队列未满
│ │
│ └── 加入队列等待
│
└── 队列已满
│
└── 拒绝请求
使用场景 #
1. 默认配置(推荐) #
thread_pool.get.size: ${processors:}
thread_pool.get.queue_size: 1000
适用于大多数集群配置。
2. 高并发 GET 场景 #
thread_pool.get.size: 32
thread_pool.get.queue_size: 2000
适用场景:
- 大量单文档查询
- 高并发读取需求
- 高性能节点
3. 资源受限 #
thread_pool.get.size: 8
thread_pool.get.queue_size: 500
适用场景:
- CPU 资源有限
- GET 请求较少
- 保护系统资源
4. I/O 密集型工作负载 #
# 可以设置大于 CPU 核心数的线程
thread_pool.get.size: ${processors:2}
thread_pool.get.queue_size: 2000
推荐设置建议 #
| CPU 核心数 | 推荐线程数 | 推荐队列大小 | 说明 |
|---|---|---|---|
| 4-8 | 4-8 | 1000 | 小型节点 |
| 8-16 | 8-16 | 1000-2000 | 中型节点 |
| 16-32 | 16-24 | 2000-4000 | 大型节点 |
| 32+ | 32-48 | 4000+ | 高性能节点 |
监控建议 #
# 查看线程池状态
GET /_cat/thread_pool/get?v
# 查看详细统计
GET /_nodes/stats/thread_pool/get
# 查看活跃线程
GET /_cat/nodes?v&h=name,cpu
性能影响 #
线程数过小(4) #
优点:
✓ 节省 CPU 资源
✓ 减少线程切换开销
缺点:
✗ GET 请求排队
✗ 响应延迟增加
✗ 吞吐量受限
线程数过大(64) #
优点:
✓ 高并发处理能力
✓ 高吞吐量
缺点:
✗ 大量上下文切换
✗ 可能影响其他操作
✗ 内存消耗增加
与搜索线程池的区别 #
| 特性 | thread_pool.get | thread_pool.search |
|---|---|---|
| 用途 | 单文档 GET 请求 | 复杂搜索查询 |
| 默认线程数 | processors | processors |
| 默认队列大小 | 1000 | 1000 |
| 队列类型 | 固定队列 | 自适应队列 |
队列大小影响 #
小队列(500):
- 快速失败
- 低延迟
- 可能拒绝有效请求
大队列(2000):
- 缓冲更多请求
- 吞吐量更高
- 可能增加延迟
故障排查 #
GET 请求被拒绝 #
# 检查线程池状态
GET /_cat/thread_pool/get?v
# 查看 rejected 计数
# 如果 rejected 持续增加,说明线程池过载
响应延迟高 #
- 检查队列积压情况
- 增加线程数
- 检查磁盘 I/O
- 检查缓存命中率
CPU 使用率高 #
- 减少线程数
- 优化查询
- 增加缓存
- 考虑使用搜索线程池
注意事项 #
- 静态配置:修改需要重启节点
- 默认基于 CPU 核心数:size 默认为 processors
- 队列满会拒绝请求:合理设置队列大小
- 与 search 线程池区分:get 仅用于单文档查询
- I/O 密集型操作:可以设置大于 CPU 核心数
- 影响查询性能:直接影响 GET 请求的响应时间





