---
title: "查询线程池"
date: 2026-01-29
lastmod: 2026-01-29
description: "介绍如何使用 Cat API 查询 Easysearch 集群中各节点的线程池统计信息。"
tags: ["Cat API", "线程池", "监控", "性能"]
summary: "此 API 用于显示集群中所有节点的线程池统计信息。
API # GET /_cat/thread_pool GET /_cat/thread_pool/{thread_pool_patterns} API 的作用 # 返回集群中所有节点的线程池详细统计信息,包括:
活跃线程数:当前正在执行的线程数量 线程池大小:线程池的配置大小 队列状态:队列中的任务数和队列容量 拒绝统计:被拒绝的任务数量 完成统计:已完成的任务总数 此 API 是监控和调试集群性能的重要工具,可以帮助识别线程池瓶颈和资源竞争问题。
API 的参数 # 路由参数 # 参数 类型 是否必需 描述 thread_pool_patterns string 可选 线程池名称模式
支持通配符
例如:search, index*, bulk,index
默认:* 匹配所有线程池 查询字符串参数 # 参数 类型 是否必需 默认值 描述 bytes string 可选 b 字节显示格式"
---
此 API 用于显示集群中所有节点的线程池统计信息。
## API
```
GET /_cat/thread_pool
GET /_cat/thread_pool/{thread_pool_patterns}
```
## API 的作用
返回集群中所有节点的线程池详细统计信息,包括:
- **活跃线程数**:当前正在执行的线程数量
- **线程池大小**:线程池的配置大小
- **队列状态**:队列中的任务数和队列容量
- **拒绝统计**:被拒绝的任务数量
- **完成统计**:已完成的任务总数
此 API 是监控和调试集群性能的重要工具,可以帮助识别线程池瓶颈和资源竞争问题。
## API 的参数
### 路由参数
| 参数 | 类型 | 是否必需 | 描述 |
|------|------|----------|------|
| `thread_pool_patterns` | string | 可选 | 线程池名称模式
支持通配符
例如:`search`, `index*`, `bulk,index`
默认:`*` 匹配所有线程池 |
### 查询字符串参数
| 参数 | 类型 | 是否必需 | 默认值 | 描述 |
|------|------|----------|--------|------|
| `bytes` | string | 可选 | b | 字节显示格式
可选值:`b`, `k`, `kb`, `m`, `mb`, `g`, `gb` |
| `format` | string | 可选 | text | 响应格式
可选值:`json`, `yaml`, `text` |
| `h` | string | 可选 | 默认列 | 指定显示的列,逗号分隔 |
| `help` | boolean | 可选 | false | 显示帮助信息 |
| `local` | boolean | 可选 | false | 是否从本地节点获取信息 |
| `master_timeout` | time | 可选 | 30s | 等待主节点响应的超时时间 |
| `s` | string | 可选 | - | 排序列
支持 `:asc` 和 `:desc` |
| `thread_pool_patterns` | string | 可选 | * | 指定线程池名称模式(查询字符串形式) |
| `time` | string | 可选 | ms | 时间单位
可选值:`nanos`, `micros`, `ms`, `s`, `m`, `h`, `d` |
| `v` | boolean | 可选 | false | 详细模式,显示列头 |
## 返回的字段信息
| 列名 | 别名 | 描述 |
|------|------|------|
| `node_name` | `nn` | 节点名称 |
| `node_id` | `id` | 节点持久 ID |
| `ephemeral_node_id` | `eid` | 节点临时 ID |
| `pid` | `p` | 进程 ID |
| `host` | `h` | 主机名 |
| `ip` | `i` | IP 地址 |
| `port` | `po` | 传输端口 |
| `name` | `n` | 线程池名称 |
| `type` | `t` | 线程池类型 |
| `active` | `a` | 活跃线程数 |
| `pool_size` | `psz` | 线程池大小 |
| `queue` | `q` | 队列中的任务数 |
| `queue_size` | `qs` | 队列最大容量 |
| `rejected` | `r` | 被拒绝的任务数 |
| `largest` | `l` | 历史最大活跃线程数 |
| `completed` | `c` | 已完成的任务数 |
| `core` | `cr` | 扩展线程池的核心线程数 |
| `max` | `mx` | 扩展线程池的最大线程数 |
| `size` | `sz` | 固定线程池的线程数 |
| `keep_alive` | `ka` | 线程保持存活时间 |
默认显示的列:`node_name`, `name`, `active`, `queue`, `rejected`
## 线程池类型
| 类型 | 描述 |
|------|------|
| `FIXED` | 固定大小线程池 |
| `SCALING` | 可扩展线程池,可根据负载动态调整线程数量 |
| `AUTO_QUEUE_ADJUSTING` | 自动队列调整线程池 |
| `FIXED_AUTO_QUEUE_ADJUSTING` | 固定大小自动队列调整线程池 |
## 常见线程池
| 线程池 | 用途 |
|--------|------|
| `search` | 处理搜索请求 |
| `write` | 处理索引写入操作 |
| `get` | 处理 GET 请求 |
| `bulk` | 处理批量操作 |
| `management` | 处理集群管理操作 |
| `listener` | 处理网络监听器 |
| `flush` | 处理刷新操作 |
| `refresh` | 处理段刷新 |
| `warmer` | 处理段预热 |
## 请求示例
```bash
# 查询所有线程池
GET /_cat/thread_pool
# 显示列头
GET /_cat/thread_pool?v
# 查询特定线程池
GET /_cat/thread_pool/search
# 查询多个线程池(逗号分隔)
GET /_cat/thread_pool/search,bulk
# 使用通配符查询
GET /_cat/thread_pool/*
# 使用 JSON 格式
GET /_cat/thread_pool?format=json
# 只显示特定列
GET /_cat/thread_pool?h=node_name,name,active,queue,rejected
# 按活跃线程数排序
GET /_cat/thread_pool?s=active:desc
# 显示帮助信息
GET /_cat/thread_pool?help
```
## 响应示例
### 文本格式(默认)
```
node_name name active queue rejected
master-node search 5 2 0
master-node write 3 0 10
data-node-1 search 8 5 0
data-node-1 bulk 2 50 15
data-node-2 search 4 1 0
data-node-2 write 2 0 5
```
### JSON 格式
```json
[
{
"node_name": "master-node",
"name": "search",
"active": "5",
"queue": "2",
"rejected": "0"
},
{
"node_name": "data-node-1",
"name": "bulk",
"active": "2",
"queue": "50",
"rejected": "15"
}
]
```
### 详细模式(带完整列头)
```
node_name name active pool_size queue queue_size rejected largest completed
master-node search 5 4 2 100 0 5 15234
master-node write 3 2 0 200 10 3 8567
```
## 使用场景
1. **性能监控**:监控线程池的使用情况
2. **瓶颈识别**:识别线程池饱和问题
3. **拒绝分析**:分析任务被拒绝的原因
4. **容量规划**:评估线程池配置是否合理
5. **问题排查**:诊断请求处理延迟问题
## 线程池问题诊断
### 高拒绝率
如果 `rejected` 列显示大量拒绝:
- 线程池过小,需要增加线程数
- 队列已满,考虑增加队列大小
- 负载过高,考虑增加节点或优化查询
### 队列堆积
如果 `queue` 列持续高位:
- 处理速度跟不上请求速度
- 可能存在慢查询或大量写入
- 检查 `active` 线程是否达到池大小上限
### 活跃线程持续高位
如果 `active` 持续接近 `pool_size`:
- 线程池可能成为瓶颈
- 考虑增加线程池大小或增加节点
## 线程池配置
线程池可以通过配置文件进行调整:
```yaml
thread_pool:
search:
size: 20
queue_size: 100
write:
size: 10
queue_size: 200
```
## 注意事项
1. 此 API 只支持 GET 方法
2. 默认只显示部分列,使用 `v=true` 显示完整列头
3. `local=true` 时可能返回过时信息,但响应更快
4. 线程池配置更改需要重启节点才能生效
5. 不同版本的 Easysearch 可能有不同的线程池类型和名称
## 最佳实践
1. **定期监控**:定期检查线程池状态,关注拒绝率
2. **设置告警**:对高拒绝率和队列堆积设置告警
3. **合理配置**:根据实际负载调整线程池大小
4. **分析模式**:分析负载模式,找出高峰时段
5. **文档记录**:记录线程池配置变更,便于问题追踪
## 相关文档
- [查询节点](./get-node.md)
- [获取节点统计信息](./get-node-stats.md)
- [查询集群健康Cat格式](./get-cluster-health-cat-format.md)