yanbin.zhang created HADOOP-20054:
-------------------------------------

             Summary: Expose Jetty QueuedThreadPool metrics in 
HttpServer2Metrics
                 Key: HADOOP-20054
                 URL: https://issues.apache.org/jira/browse/HADOOP-20054
             Project: Hadoop Common
          Issue Type: Improvement
          Components: metrics
    Affects Versions: 3.5.0
            Reporter: yanbin.zhang


HADOOP-17133 added HttpServer2Metrics, which exposes Jetty's
StatisticsHandler (request counts, response codes, request/dispatch
latency, etc.) as Hadoop Metrics2.

However, it does not expose anything about the Jetty HTTP worker thread
pool (QueuedThreadPool). When a daemon's web endpoint (e.g. the RM at
:8088, or NN/DN/NM web UIs) becomes slow or unresponsive, there is
currently no metric to tell whether the HTTP thread pool is exhausted or
whether requests are piling up in the queue. Operators can only guess, or
take a jstack and count "qtp*" threads manually after the fact.

A common failure mode is that web worker threads block (for example while
acquiring a scheduler lock), the pool saturates at its max (250 by
default), new requests queue up, clients time out and drop the connection
-- surfacing as jetty EofException on the server side -- while the daemon
process itself is otherwise healthy. Without thread-pool metrics this is
hard to confirm.

This improvement extends HttpServer2Metrics to also expose the
QueuedThreadPool state:

- HttpThreadsMax         (getMaxThreads)
- HttpThreadsMin         (getMinThreads)
- HttpThreads            (getThreads)
- HttpThreadsIdle        (getIdleThreads)
- HttpThreadsBusy        (getBusyThreads)
- HttpThreadsQueueSize   (getQueueSize)
- HttpThreadsLowOnThreads(isLowOnThreads, as 0/1)

These are published under the existing "HttpServer2-<port>" metrics
source and remain gated by the existing hadoop.http.metrics.enabled
switch, so there is no behavior change when metrics are disabled.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to