了解 Dropwizard JMX 指标排队线程池

bes*_*hes 3 java multithreading dropwizard

排队线程池有 4 个指标

jmx.metrics.org.eclipse.jetty.util.thread.QueuedThreadPool.dw.size.Value
jmx.metrics.org.eclipse.jetty.util.thread.QueuedThreadPool.dw.jobs.Value
jmx.metrics.org.eclipse.jetty.util.thread.QueuedThreadPool.dw.utilization.max.Value
jmx.metrics.org.eclipse.jetty.util.thread.QueuedThreadPool.dw.utilization.Value
Run Code Online (Sandbox Code Playgroud)

他们的意思是什么?什么是理想值?

bes*_*hes 9

org.eclipse.jetty.util.thread.QueuedThreadPool.dw.jobs

\n
\n

\xe2\x80\x9c 排队等待线程\xe2\x80\x9d 的作业数量。您希望该指标尽可能低,因为您不希望请求等待被服务。您可能偶尔会得到 1,但那是当指标抓取它\xe2\x80\x99s 值时,在单个作业在队列中的极短时间内,无需担心,因为所有请求都必须从队列中得到服务。

\n
\n
\n

理想:理想情况下,该值应接近 0。每当该数字增大且 dw.size < maxThreads 时,dropwizard 将启动新线程。从而将等待重置为0。

\n
\n

org.eclipse.jetty.util.thread.QueuedThreadPool.dw.size

\n
\n

当前池\xe2\x80\x9d 中的线程数。这些是 (Jetty) Web 服务器中为请求提供服务的线程。

\n
\n
\n

理想情况:这个数字将小于您在 config.yml 中定义的 maxThreads(默认 1024)。如果您看到该指标接近 maxThreads 并且 QueuedThreadPool.dw.jobs 没有减少,您应该调查为什么使用了如此多的线程,并尝试增加它(如果您的计算机可以支持)。

\n
\n

org.eclipse.jetty.util.thread.QueuedThreadPool.dw.utilization

\n
\n

池中当前正在使用的线程数(例如,池中当前有多少线程不空闲)

\n
\n

org.eclipse.jetty.util.thread.QueuedThreadPool.dw.utilization-max

\n
\n

当前使用的线程数与池可以增长到的最大线程数相比。

\n
\n
\n

理想情况:该值应小于 1。如果该值始终为 1,则应增加最大线程数。

\n
\n

来源和鸣谢nickb

\n