_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 | 采样时长 | 时间越长结果越有代表性 |
| 节点分段 | 每个节点一段输出 | 优先看负载高的节点 |
| 栈顶几行 | 热点来源 | 结合类名判断线程类型 |
采样只是瞬时快照,一次没看到异常不代表没问题;怀疑有热点时应在业务高峰多采几次再下结论。
搜索热点里出现大量搜索线程时,先对照慢日志确认是查询写法问题还是集群整体资源不足,避免把容量问题误判成查询问题。
栈顶常见到查询重写、聚合执行相关的类名,把采样时间与慢日志时间戳对齐,是定位到具体查询最有效的一步。