配置项作用 #
thread_pool.listener 相关配置项控制用于执行事件监听器回调的线程池。监听器线程池用于处理各种集群和索引事件的监听器通知。该配置项已弃用(Deprecated)。
配置项类型 #
该配置项为静态配置,需要在启动时设置,修改后需要重启节点才能生效。
默认值 #
thread_pool.listener.size: half_processors_max_10
计算公式: min(allocatedProcessors / 2, 10)
thread_pool.listener.queue_size: -1(无界队列)
是否必需 #
可选配置项(有默认值)
配置格式 #
# 默认配置
thread_pool.listener.size: 5
thread_pool.listener.queue_size: -1
# 增加线程数
thread_pool.listener.size: 10
# 设置有界队列
thread_pool.listener.size: 5
thread_pool.listener.queue_size: 1000
相关配置项 #
| 配置项 | 默认值 | 说明 |
|---|---|---|
thread_pool.listener.size | half_processors_max_10 | 线程池大小 |
thread_pool.listener.queue_size | -1 | 队列大小(-1 表示无界) |
线程池类型 #
类型: FIXED (固定线程池)
特点:
- 固定数量的线程
- 默认无界队列
- 用于事件监听器回调
- 已弃用(@Deprecated)
工作原理 #
监听器事件处理流程:
┌─────────────────────────────────────────────────────────────────┐
│ 监听器事件处理 │
└─────────────────────────────────────────────────────────────────┘
事件触发
│
├── 集群状态变更
├── 索引创建/删除
├── 分片分配变更
└── 其他集群事件
│
▼
检查线程池状态
│
├── 有空闲线程
│ │
│ └── 立即处理监听器回调
│
└── 线程繁忙
│
└── 加入队列等待(无界队列)
默认值计算 #
half_processors_max_10 = min(allocatedProcessors / 2, 10)
示例:
CPU 核心数 = 4
half_processors_max_10 = min(4/2, 10) = 2
CPU 核心数 = 8
half_processors_max_10 = min(8/2, 10) = 4
CPU 核心数 = 16
half_processors_max_10 = min(16/2, 10) = 8
CPU 核心数 = 32
half_processors_max_10 = min(32/2, 10) = 10
使用场景 #
1. 默认配置(推荐) #
thread_pool.listener.size: 5
thread_pool.listener.queue_size: -1
适用于大多数集群配置。
2. 大量监听器 #
thread_pool.listener.size: 10
thread_pool.listener.queue_size: -1
适用场景:
- 大量监听器注册
- 复杂的事件处理
- 高事件频率
3. 限制队列大小 #
thread_pool.listener.size: 5
thread_pool.listener.queue_size: 1000
适用场景:
- 避免内存溢出
- 快速失败策略
- 保护系统资源
推荐设置建议 #
| CPU 核心数 | 推荐线程数 | 推荐队列大小 | 说明 |
|---|---|---|---|
| 4 | 2 | -1(无界) | 小型节点 |
| 8 | 4 | -1(无界) | 中型节点 |
| 16 | 8 | -1(无界) | 大型节点 |
| 32+ | 10 | -1(无界) | 高性能节点 |
监控建议 #
# 查看线程池状态
GET /_cat/thread_pool/listener?v
# 查看详细统计
GET /_nodes/stats/thread_pool/listener
弃用说明 #
@Deprecated:
- 此线程池已弃用
- 可能在未来版本中移除
- 建议使用其他机制实现监听功能
- 大多数用户不需要配置此线程池
注意事项 #
- 静态配置:修改需要重启节点
- 已弃用:此配置项已标记为 @Deprecated
- 无界队列:默认使用无界队列可能导致内存问题
- 轻量级操作:监听器回调应该是轻量级的
- 通常不需要调整:大多数情况下使用默认值
- 未来可能移除:新版本可能不再使用此线程池





