📣 极限科技诚招搜索运维工程师(Elasticsearch/Easysearch)- 全职/北京 👉 : 立即申请加入

配置项作用 #

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.sizehalf_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 核心数推荐线程数推荐队列大小说明
42-1(无界)小型节点
84-1(无界)中型节点
168-1(无界)大型节点
32+10-1(无界)高性能节点

监控建议 #

# 查看线程池状态
GET /_cat/thread_pool/listener?v

# 查看详细统计
GET /_nodes/stats/thread_pool/listener

弃用说明 #

@Deprecated:
- 此线程池已弃用
- 可能在未来版本中移除
- 建议使用其他机制实现监听功能
- 大多数用户不需要配置此线程池

注意事项 #

  1. 静态配置:修改需要重启节点
  2. 已弃用:此配置项已标记为 @Deprecated
  3. 无界队列:默认使用无界队列可能导致内存问题
  4. 轻量级操作:监听器回调应该是轻量级的
  5. 通常不需要调整:大多数情况下使用默认值
  6. 未来可能移除:新版本可能不再使用此线程池