配置项作用 #
thread_pool.system_read 相关配置项控制用于执行系统级别读取操作的线程池。系统读取操作包括内部系统管理、元数据读取等操作。该线程池采用固定大小线程池类型。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
thread_pool.system_read.size: half_processors_max_5
计算公式: min(allocatedProcessors / 2, 5)
thread_pool.system_read.queue_size: 2000
是否必需 #
可选配置项(有默认值)
配置格式 #
# 默认配置
thread_pool.system_read.size: 5
thread_pool.system_read.queue_size: 2000
# 增加线程数
thread_pool.system_read.size: 10
thread_pool.system_read.queue_size: 4000
# 减少线程数
thread_pool.system_read.size: 3
thread_pool.system_read.queue_size: 1000
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
thread_pool.system_read.size | half_processors_max_5 | 线程池大小 |
thread_pool.system_read.queue_size | 2000 | 队列大小 |
thread_pool.system_write.size | half_processors_max_5 | 系统写入线程池大小 |
thread_pool.system_write.queue_size | 1000 | 系统写入队列大小 |
线程池类型 #
类型: FIXED (固定线程池)
特点:
- 固定数量的线程
- 有界队列
- 专门用于系统内部读取操作
工作原理 #
系统读取请求处理流程:
┌─────────────────────────────────────────────────────────────────┐
│ 系统读取请求处理 │
└─────────────────────────────────────────────────────────────────┘
系统读取请求到达
│
▼
检查线程池状态
│
├── 有空闲线程
│ │
│ └── 立即处理
│
├── 线程繁忙,队列未满
│ │
│ └── 加入队列等待
│
└── 队列已满
│
└── 拒绝请求
使用场景 #
1. 默认配置(推荐) #
thread_pool.system_read.size: 5
thread_pool.system_read.queue_size: 2000
适用于大多数集群配置。
2. 大规模集群 #
thread_pool.system_read.size: 10
thread_pool.system_read.queue_size: 4000
适用场景:
- 大量系统元数据操作
- 频繁的集群状态读取
- 大规模索引管理
3. 资源受限 #
thread_pool.system_read.size: 3
thread_pool.system_read.queue_size: 1000
适用场景:
- 资源受限环境
- 系统操作较少
- 保护系统资源
默认值计算 #
half_processors_max_5 = min(allocatedProcessors / 2, 5)
示例:
CPU 核心数 = 4
half_processors_max_5 = min(4/2, 5) = 2
CPU 核心数 = 8
half_processors_max_5 = min(8/2, 5) = 4
CPU 核心数 = 16
half_processors_max_5 = min(16/2, 5) = 5
CPU 核心数 = 32
half_processors_max_5 = min(32/2, 5) = 5
推荐设置建议 #
| CPU 核心数 | 推荐线程数 | 推荐队列大小 | 说明 |
|---|---|---|---|
| 4 | 2 | 1000-2000 | 小型节点 |
| 8 | 4 | 2000 | 中型节点 |
| 16+ | 5 | 2000-4000 | 大型节点 |
监控建议 #
# 查看线程池状态
GET /_cat/thread_pool/system_read?v
# 查看详细统计
GET /_nodes/stats/thread_pool/system_read
与 system_write 的区别 #
| 特性 | system_read | system_write |
|---|---|---|
| 用途 | 系统读取操作 | 系统写入操作 |
| 默认线程数 | half_processors_max_5 | half_processors_max_5 |
| 默认队列大小 | 2000 | 1000 |
| 操作类型 | 非阻塞读取 | 阻塞写入 |
注意事项 #
- 静态配置:修改需要重启节点
- 系统内部使用:此线程池用于系统内部操作
- 默认值受限:最大值为 5,即使 CPU 核心数很多
- 队列较大:默认 2000 的队列大小
- 通常不需要调整:大多数情况下使用默认值即可





