线程池和连接池监控

您可以通过线程池和连接池监控功能监控具体应用所使用的线程池或连接池的各项指标,包括核心线程数量、当前线程数量、最大线程数量、活跃线程数量、任务队列容量。

前提条件

接入应用监控

重要

仅专家版支持线程池和连接池监控功能。

开启线程池和连接池监控

2.7.1.3之前版本的Agent暂不支持线程池和连接池监控,请先升级Agent2.7.1.3或以上版本。具体操作,请参见升级ARMS探针

  • 2.7.3.5及以上版本Agent默认已开启线程池和连接池监控。

  • 2.7.1.3及以上版本的Agent请执行以下操作手动开启。

  1. 登录ARMS控制台,在左侧导航栏选择应用监控 > 应用列表

  2. 应用列表页面顶部选择目标地域,然后单击目标应用名称。

    说明

    语言列显示Java图标图标的应用为接入应用监控的应用,显示-图标的应用为接入可观测链路 OpenTelemetry 版的应用。

  3. 在左侧导航栏单击应用设置

  4. 自定义配置页签下的高级设置区域,打开线程池监控的开关。

查看线程池和连接池监控指标

开启线程池和连接池监控功能后,您可以在应用详情线程池监控连接池监控页签查看各项监控指标。

图 1. 线程池监控线程池监控

图 2. 连接池监控连接池监控

线程池支持的框架

4.1.x及以上探针版本

支持框架:

  • java.util.ThreadPoolExecutor:一般用于Tomcat8~9.1、Dubbo、HSF、Vertx以及用户自定义线程池。

  • org.apache.tomcat.util.threads.ThreadPoolExecutor:一般用于Tomcat9.1+。

  • org.eclipse.jetty.util.thread.QueuedThreadPool:一般用于Jetty。

  • org.xnio.XnioWorker:一般用于Undertow。

采集的指标如下:

指标名

支持框架

指标描述

arms_thread_pool_core_pool_size

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

  • XnioWorke

  • QueuedThreadPool

核心线程数,一般是静态配置,不会改变。

arms_thread_pool_max_pool_size

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

  • XnioWorke

  • QueuedThreadPool

最大空闲连接数,一般是静态配置,不会改变。

arms_thread_pool_active_thread_count

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

  • XnioWorke

  • QueuedThreadPool

活跃线程数,即当前正在执行任务的线程。

arms_thread_pool_current_thread_count

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

  • QueuedThreadPool

当前线程数,包含活跃线程数和当前正在等待任务的线程数。

arms_thread_pool_max_thread_count

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

线程池历史最大线程数。

arms_thread_pool_scheduled_task_count

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

线程池调度任务数。

arms_thread_pool_completed_task_count

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

线程池执行完成任务数。

arms_thread_pool_rejected_task_count

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

  • QueuedThreadPool

线程池拒绝任务数。

arms_thread_pool_queue_size

  • ThreadPoolExecutor(JDK)

  • ThreadPoolExecutor(Tomcat 9.1+)

  • XnioWorke

  • QueuedThreadPool

线程池任务队列大小。

4.1.x以下探针版本

线程池监控支持Tomcat、HSF、Dubbo、Vert.xUndertow框架,其中,3.1.x及以下版本探针支持Undertow1.x~Undertow2.0.x版本线程池监控,3.2.x及以上版本探针支持Undertow所有版本线程池监控。

采集的指标如下:

指标名称

指标

线程池核心线程数

arms_threadpool_core_size

线程池最大线程数

arms_threadpool_max_size

线程池活跃线程数

arms_threadpool_active_size

线程池队列大小

arms_threadpool_queue_size

线程池当前大小

arms_threadpool_current_size

线程池监控支持SchedulerX框架,采集的指标如下:

指标名称

指标

线程池活跃线程数

arms_threadpool_active_size

连接池支持的框架

4.1.x及以上探针版本

支持框架:DBCP(>2.0)、Vibur DBCP(>11.0)、c3p0(>0.9.2)、Druid、HikariCP(>3.0)、Jedis(>3.0)、Lettuce(>5.0)、Redisson(>3.0)。

采集的指标如下:

指标名

支持框架

指标描述

arms_connection_pool_connection_count

DBCP、c3p0、Vibur DBCP、Druid、Hikaricp、Jedis、Lettuce、Redisson

连接数,可通过State区分ActiveIdle连接数。

arms_connection_pool_connection_min_idle_count

DBCP、Jedis、Druid、HikariCP、Lettuce

最小空闲连接数,一般是静态配置,不会改变。

arms_connection_pool_connection_max_idle_count

DBCP、Jedis、Druid、Lettuce、

最大空闲连接数,一般是静态配置,不会改变。

arms_connection_pool_connection_max_count

DBCP、Druid、Vibur DBCP、HikariCP

最大连接数,一般是静态配置,不会改变。

arms_connection_pool_pending_request_count

c3p0、HikariCP、Jedis

阻塞的连接请求数。

4.1.x以下探针版本

连接池监控支持okHttp2、okHttp3框架,采集的指标如下:

指标名称

指标

连接池活跃连接数

arms_threadpool_active_size

连接池当前连接数

arms_threadpool_current_size

连接池监控支持Apache HTTPClient框架,采集的指标如下:

指标名称

指标

连接池当前连接数

arms_threadpool_current_size

连接池最大连接数

arms_threadpool_max_size

连接池等待队列数

arms_threadpool_queue_size

连接池监控支持Druid框架,采集的指标如下:

指标名称

指标

连接池活跃连接数

arms_threadpool_active_size

连接池最大连接数

arms_threadpool_max_size

连接池监控支持Hikaricp框架,采集的指标如下:

指标名称

指标

连接池活跃连接数

arms_threadpool_active_size

连接池最大连接数

arms_threadpool_max_size