スレッドプールと接続プールの設定が不適切であったり、枯渇したりすると、リクエストのタイムアウト、接続リーク、カスケード障害が発生します。Application Real-Time Monitoring Service (ARMS) のスレッドプールと接続プールのモニタリング機能は、Java アプリケーションからリアルタイムでメトリックを収集し、以下のことを可能にします:
リクエストのタイムアウトが発生する前に、スレッドプールの飽和を検出します。
アクティブ接続とアイドル接続の比率を追跡することで、接続リークを特定します。
実際の使用状況データに基づいて、プールの設定を適正化します。
ARMS は、Tomcat、Dubbo、Jetty、Undertow、HikariCP、Druid などの一般的なフレームワークからメトリックを収集します。
この機能は、アプリケーションモニタリング Pro Edition のみでサポートされています。
事前準備
ご利用のアプリケーションが ARMS によってモニタリングされていることを確認してください。詳細については、「概要」をご参照ください。
バージョンの互換性
| ARMS エージェントのバージョン | スレッドプールおよび接続プールのモニタリング | 必要な操作 |
|---|---|---|
| V2.7.3.5 以降 | デフォルトで有効 | なし |
| V2.7.1.3 ~ V2.7.3.4 | 対応済み(手動での有効化が必要) | 「モニタリングを手動で有効化 |
| V2.7.1.3 より前 | 非対応 | ARMS エージェントを V2.7.1.3 以降に更新 |
モニタリングの手動有効化
ARMS エージェントのバージョンが V2.7.3.5 以降の場合、モニタリングはすでに有効になっています。このセクションはスキップしてください。
ARMS エージェント V2.7.1.3 から V2.7.3.4 の場合:
ARMS コンソールにログインします。左側のナビゲーションウィンドウで、[アプリケーションモニタリング] > [アプリケーションリスト] を選択します。
[アプリケーションリスト] ページで、上部のナビゲーションバーでリージョンを選択し、アプリケーションの名前をクリックします。
[言語] 列のアイコンは、プログラミング言語を示します: -
: Java -
: Go -
: Python - - (ハイフン): OpenTelemetry 向けマネージドサービスでモニタリングされるアプリケーション左側のナビゲーションウィンドウで、[アプリケーション設定] をクリックします。
[カスタム設定] タブをクリックします。[プールモニタリング設定] セクションで、[スレッドプール、接続プールのモニタリング] をオンにします。
モニタリングデータの表示
ご利用のアプリケーションの [アプリケーション詳細] ページを開きます。モニタリングデータは、次の 2 つのタブで確認できます:
[スレッドプールモニタリング]: プールごとのスレッドメトリック (コアサイズ、アクティブ数、キューの深さなど) を表示します。

[接続プールモニタリング]: プールごとの接続メトリック (合計接続数、アイドル接続数、保留中のリクエストなど) を表示します。

サポートされるフレームワークとメトリック
スレッドプールフレームワーク
ARMS エージェント V4.1.x 以降
次の表に、ARMS エージェントがインスツルメントする Java クラスと、それに対応するフレームワークを示します。
| Java クラス | フレームワーク |
|---|---|
java.util.ThreadPoolExecutor | Apache Tomcat 8 から 9.1、Apache Dubbo、HSF (High-speed Service Framework)、Vert.x、およびユーザー定義のスレッドプール |
org.apache.tomcat.util.threads.ThreadPoolExecutor | Tomcat 9.1+ |
org.eclipse.jetty.util.thread.QueuedThreadPool | Jetty |
org.xnio.XnioWorker | Undertow |
スレッドプールのメトリック (V4.1.x 以降)
| メトリック | 説明 | サポートされるフレームワーク |
|---|---|---|
arms_thread_pool_core_pool_size | コアスレッド数。設定値であり、ランタイムには変更されません。 | ThreadPoolExecutor (JDK)、ThreadPoolExecutor (Tomcat 9.1+)、XnioWorker、QueuedThreadPool |
arms_thread_pool_max_pool_size | 最大スレッド数。設定値であり、ランタイムには変更されません。 | ThreadPoolExecutor (JDK)、ThreadPoolExecutor (Tomcat 9.1+)、XnioWorker、QueuedThreadPool |
arms_thread_pool_active_thread_count | 現在タスクを実行中のスレッド。 | ThreadPoolExecutor (JDK)、ThreadPoolExecutor (Tomcat 9.1+)、XnioWorker、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+)、XnioWorker、QueuedThreadPool |
ARMS エージェント V4.1.x より前
V4.1.x より前のエージェントバージョンは、Apache Tomcat、HSF、Apache Dubbo、Vert.x、Undertow の各フレームワークのスレッドプールモニタリングをサポートしています。
エージェント V3.1.x 以前は Undertow V1.x および V2.x のみをサポートします。エージェント V3.2.x 以降はすべての Undertow バージョンをサポートします。
スレッドプールのメトリック (V4.1.x より前)
| メトリック | 説明 |
|---|---|
arms_threadpool_core_size | コアスレッド数 |
arms_threadpool_max_size | 最大スレッド数 |
arms_threadpool_active_size | アクティブスレッド数 |
arms_threadpool_queue_size | タスクキューサイズ |
arms_threadpool_current_size | 現在のスレッド数 |
SchedulerX フレームワークもサポートされており、1 つのメトリックが収集されます:
| メトリック | 説明 |
|---|---|
arms_threadpool_active_size | アクティブスレッド数 |
接続プールフレームワーク
ARMS エージェント V4.1.x 以降
| フレームワーク | 最小バージョン |
|---|---|
| DBCP | 2.0 |
| Vibur DBCP | 11.0 |
| c3p0 | 0.9.2 |
| Apache Druid | すべてのバージョン |
| HikariCP | 3.0 |
| Jedis | 3.0 |
| Lettuce | 5.0 |
| Redisson | 3.0 |
| Tomcat DBCP | 8.0 |
| Tomcat JDBC | 8.0 |
接続プールのメトリック (V4.1.x 以降)
| メトリック | 説明 | サポートされるフレームワーク |
|---|---|---|
arms_connection_pool_connection_count | アクティブ接続とアイドル接続を含む合計接続数。 | DBCP、c3p0、Vibur DBCP、Druid、HikariCP、Jedis、Lettuce、Redisson、Tomcat DBCP、Tomcat JDBC |
arms_connection_pool_connection_min_idle_count | 最小アイドル接続数。設定値であり、ランタイムには変更されません。 | DBCP、Jedis、Druid、HikariCP、Lettuce、Tomcat DBCP、Tomcat JDBC |
arms_connection_pool_connection_max_idle_count | 最大アイドル接続数。設定値であり、ランタイムには変更されません。 | DBCP、Jedis、Druid、Lettuce、Tomcat DBCP、Tomcat JDBC |
arms_connection_pool_connection_max_count | 最大接続数。設定値であり、ランタイムには変更されません。 | DBCP、Druid、Vibur DBCP、HikariCP、Tomcat DBCP、Tomcat JDBC |
arms_connection_pool_pending_request_count | 利用可能な接続を待機している、ブロックされた接続リクエスト。 | c3p0、HikariCP、Jedis、Tomcat DBCP、Tomcat JDBC |
ARMS エージェント V4.1.x より前
V4.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 | 保留中のリクエストキューのサイズ |
Apache Druid
| メトリック | 説明 |
|---|---|
arms_threadpool_active_size | アクティブ接続数 |
arms_threadpool_max_size | 最大接続数 |
HikariCP
| メトリック | 説明 |
|---|---|
arms_threadpool_active_size | アクティブ接続数 |
arms_threadpool_max_size | 最大接続数 |