ES hot_threads

438 阅读1分钟

API用法

GET /_nodes/hot_threads
GET /_nodes/nodeId1,nodeId2/hot_threads

参数介绍

  • ignore_idle_threads(Optional, Boolean)

值为true,则会过滤掉已知的空闲线程(例如,在套接字选择中等待,或从空队列中获取任务)。

默认为true

  • interval(Optional, time units)

执行热点线程的采样间隔。

默认为500ms

  • snapshots(Optional, integer)

线程堆栈跟踪的数量。

默认为 10

  • threads

获取的top 热门线程数量。

默认为3,即获取最“热门”的3个线程。

  • master_timeout

等待连接到master节点的超时时间。

(Optional, time units)

  • timeout

响应超时时间。

默认为30s

  • type(Optional, string)

要采样的类型。

可用的选项是:

1)block ——线程阻塞状态的时间。

2)cpu ——线程占据CPU时间。

3)wait ——线程等待状态的时间。

默认为cpu

API回包解读

与其他api不同,hot_threads返回的是格式化文本,而非json结构

//回包的第一部分是热点线程所在节点信息
::: {1594350457001392032}{9ZBFzLp1SkCzwslyFOV3tw}{Mj-03-v1TyamfOyO7rBtGA}{8.4.65.23}{8.4.65.23:26215}{ml.machine_memory=16478932992, rack=cvm_4_200004, xpack.installed=true, set=200004, ip=8.4.65.23, temperature=hot, ml.max_open_jobs=20, ml.enabled=true, region=4}
//热点线程信息,比如采样间隔,当前热点线程数量
  Hot threads at 2022-09-10T12:17:00.676, interval=500ms, busiestThreads=3, ignoreIdleThreads=true:
   //[search]采样线程名称,该线程占用了17.7% 的cpu时间,
   17.7% (88.7ms out of 500ms) cpu usage by thread 'elasticsearch[1594350457001392032][search][T#3]'
    //拍摄的10个快照中的2个快照具有下文相同的堆栈信息 
    2/10 snapshots sharing following 15 elements
       org.elasticsearch.search.SearchService.executeFetchPhase(SearchService.java:566)
       org.elasticsearch.action.search.SearchTransportService$11.messageReceived(SearchTransportService.java:439)
       org.elasticsearch.action.search.SearchTransportService$11.messageReceived(SearchTransportService.java:436)
       org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler$1.doRun(SecurityServerTransportInterceptor.java:251)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       org.elasticsearch.xpack.security.transport.SecurityServerTransportInterceptor$ProfileSecuredRequestHandler.messageReceived(SecurityServerTransportInterceptor.java:309)
       org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:66)
       org.elasticsearch.transport.TcpTransport$RequestHandler.doRun(TcpTransport.java:1629)
       org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:723)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       org.elasticsearch.common.util.concurrent.TimedRunnable.doRun(TimedRunnable.java:41)
       org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
       java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       java.lang.Thread.run(Unknown Source)
     4/10 snapshots sharing following 10 elements
       sun.misc.Unsafe.park(Native Method)
       java.util.concurrent.locks.LockSupport.park(Unknown Source)
       java.util.concurrent.LinkedTransferQueue.awaitMatch(Unknown Source)
       java.util.concurrent.LinkedTransferQueue.xfer(Unknown Source)
       java.util.concurrent.LinkedTransferQueue.take(Unknown Source)
       org.elasticsearch.common.util.concurrent.SizeBlockingQueue.take(SizeBlockingQueue.java:165)
       java.util.concurrent.ThreadPoolExecutor.getTask(Unknown Source)
       java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
       java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
       java.lang.Thread.run(Unknown Source)



参考资料

cloud.tencent.com/developer/a…

www.elastic.co/guide/en/el…