首页/数据/NoSQL 速查/_nodes/hot_threads 热点线程排查
Elasticsearch89 条

_nodes/hot_threads 热点线程排查

hot_threads 采样节点上 CPU 占用高的线程栈,用于定位是哪些查询、合并或 GC 在消耗资源;默认按 CPU 采样,也可按 wait 或 block。

NoSQL 速查数据更新于 2026-10-13

_nodes/hot_threads 是什么

_nodes/hot_threads 采样节点上 CPU 占用高的线程栈,用于定位是哪些查询、合并或垃圾回收在消耗资源。默认按 CPU 采样,也能用 type=wait 或 type=block 换成等待与阻塞视角,threads 参数控制返回几个线程,interval 控制采样时长。输出是按节点分段的纯文本,节点多时先看 CPU 或堆占用偏高的那台,栈顶几行通常就是热点来源。

基本信息

接口GET /_nodes/hot_threads 或 /_nodes/<node>/hot_threads
常用参数threads=3、type=cpu|wait|block、interval
输出按节点分段的纯文本线程栈
采样性质瞬时快照,建议结合多次采样判断
适用定位 CPU、等待与阻塞类热点

典型使用场景

  • CPU 飙高排查:确认是搜索、写入还是合并线程在占用
  • 查询定位:在栈里识别搜索相关线程,缩小到具体查询形态
  • 等待分析:type=wait 看线程在等锁、等磁盘还是等网络
  • 阻塞排查:type=block 找出被阻塞住的线程
  • 与慢日志对照:判断瓶颈在查询写法还是集群资源

采样方式

采样方式
GET /_nodes/hot_threads?threads=5                 # 采样最热的 5 个线程
GET /_nodes/hot_threads?type=wait&interval=10s    # 从等待视角采样 10 秒
GET /_nodes/node-1/hot_threads                    # 只看某个节点
GET /_nodes/hot_threads?type=block                # 找阻塞型线程

参数与输出读法

项含义注意
threads返回的线程数太少可能错过真正热点
type采样视角按问题类型选择 cpu / wait / block
interval采样时长时间越长结果越有代表性
节点分段每个节点一段输出优先看负载高的节点
栈顶几行热点来源结合类名判断线程类型
采样只是瞬时快照,一次没看到异常不代表没问题;怀疑有热点时应在业务高峰多采几次再下结论。
搜索热点里出现大量搜索线程时,先对照慢日志确认是查询写法问题还是集群整体资源不足,避免把容量问题误判成查询问题。
栈顶常见到查询重写、聚合执行相关的类名,把采样时间与慢日志时间戳对齐,是定位到具体查询最有效的一步。

易错点

  • 采样只是瞬时快照,未见异常时多采几次再下结论
  • 只看 CPU 视角容易忽略磁盘或锁等待带来的延迟,必要时要换 type=wait 复核
  • 节点数量多时逐台排查很慢,先用 CPU 或堆使用率筛出可疑节点
  • 把线程栈里的类名当成结论:需要结合查询日志与监控指标才能定位到具体业务

数据来源与参考

  • Elasticsearch Guide: Nodes hot threads API
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌