/api/stats/threads

The threads endpoint is used for debugging the TSD and providing insight into the state and execution of various threads without having to resort to a JStack trace. (v2.2)

Verbs

  • GET

Requests

No parameters available.

Example Request

Query String

http://localhost:4242/api/stats/threads

Response

The response is an array of objects. Fields in the response include:

Name

Data Type

Description

Example

threadID

Integer

Numeric ID of the thread

1

priority

Integer

Execution priority for the thread

5

name

String

String name of the thread, usually assigned by default

New I/O worker #23

interrupted

Boolean

Whether or not the thread was interrupted

false

state

String

One of the valid Java thread states

RUNNABLE

stack

Array<String>

A stack trace showing where execution is currently located

See Below

Example Response

[
    {
        "threadID": 33,
        "priority": 5,
        "name": "AsyncHBase I/O Worker #23",
        "interrupted": false,
        "state": "RUNNABLE",
        "stack": [
            "sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)",
            "sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:136)",
            "sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:69)",
            "sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)",
            "sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)",
            "org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)",
            "org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:415)",
            "org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)",
            "org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)",
            "org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)",
            "org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)",
            "org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)",
            "java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)",
            "java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)",
            "java.lang.Thread.run(Thread.java:695)"
        ]
    },
    {
        "threadID": 6,
        "priority": 9,
        "name": "Signal Dispatcher",
        "interrupted": false,
        "state": "RUNNABLE",
        "stack": []
    },
    {
        "threadID": 21,
        "priority": 5,
        "name": "AsyncHBase I/O Worker #11",
        "interrupted": false,
        "state": "RUNNABLE",
        "stack": [
            "sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)",
            "sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:136)",
            "sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:69)",
            "sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)",
            "sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)",
            "org.jboss.netty.channel.socket.nio.SelectorUtil.select(SelectorUtil.java:68)",
            "org.jboss.netty.channel.socket.nio.AbstractNioSelector.select(AbstractNioSelector.java:415)",
            "org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:212)",
            "org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:89)",
            "org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)",
            "org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)",
            "org.jboss.netty.util.internal.DeadLockProofWorker$1.run(DeadLockProofWorker.java:42)",
            "java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)",
            "java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)",
            "java.lang.Thread.run(Thread.java:695)"
        ]
    },
    {
        "threadID": 2,
        "priority": 10,
        "name": "Reference Handler",
        "interrupted": false,
        "state": "WAITING",
        "stack": [
            "java.lang.Object.wait(Native Method)",
            "java.lang.Object.wait(Object.java:485)",
            "java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)"
        ]
    },
    {
        "threadID": 44,
        "priority": 5,
        "name": "OpenTSDB Timer TSDB Timer #1",
        "interrupted": false,
        "state": "TIMED_WAITING",
        "stack": [
            "java.lang.Thread.sleep(Native Method)",
            "org.jboss.netty.util.HashedWheelTimer$Worker.waitForNextTick(HashedWheelTimer.java:483)",
            "org.jboss.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:392)",
            "org.jboss.netty.util.ThreadRenamingRunnable.run(ThreadRenamingRunnable.java:108)",
            "java.lang.Thread.run(Thread.java:695)"
        ]
    }
]