Undertow
Undertow は高性能な Java Web サーバーおよび Web アプリケーションフレームワークで、軽量・柔軟・高い拡張性を備えています。高並行リクエストを効率よく処理でき、HTTP/1.1、HTTP/2、WebSocket など複数のプロトコルをサポートします。高性能な Web アプリケーションやサービスの構築によく使われます。
設定¶
DataKit でコレクターを有効化¶
- StatsD コレクターを有効化
cp /usr/local/datakit/conf.d/samples/statsd.conf.sample /usr/local/datakit/conf.d/samples/statsd.conf
- ddtrace コレクターを有効化
cp /usr/local/datakit/conf.d/samples/ddtrace.conf.sample /usr/local/datakit/conf.d/samples/ddtrace.conf
- Datakit を再起動
datakit service -R
アプリケーション設定¶
dd-java-agentをダウンロード
undertow.yamlを設定
DDTrace は JavaBean から Undertow のメトリクスデータを取得します
init_config:
instances:
- jvm_direct: true
name: undertow-monitoring
collect_default_jvm_metrics: false
collect_default_metrics: false
refresh_beans: 60
conf:
- include:
bean_regex: "org.xnio:type=Xnio,provider=\"nio\",worker=\"XNIO-.*\""
attribute:
IoThreadCount:
metric_type: gauge
alias: undertow.io.thread.count
- include:
bean_regex: "jboss.threads:name=\"XNIO-.*\",type=thread-pool"
attribute:
CorePoolSize:
metric_type: gauge
alias: undertow.core.pool.size
MaximumPoolSize:
metric_type: gauge
alias: undertow.max.pool.size
ActiveCount:
metric_type: gauge
alias: undertow.active.count
LargestPoolSize:
metric_type: gauge
alias: undertow.largest.pool.size
CompletedTaskCount:
metric_type: gauge
alias: undertow.completed.task.count
PoolSize:
metric_type: gauge
alias: undertow.pool.size
GrowthResistance:
metric_type: gauge
alias: undertow.growth.resistance
MaximumQueueSize:
metric_type: gauge
alias: undertow.max.queue.size
LargestQueueSize:
metric_type: gauge
alias: undertow.largest.queue.size
SubmittedTaskCount:
metric_type: gauge
alias: undertow.submitted.task.count
RejectedTaskCount:
metric_type: gauge
alias: undertow.rejected.task.count
SpinMissCount:
metric_type: gauge
alias: undertow.spin.miss.count
QueueSize:
metric_type: gauge
alias: undertow.queue.size
KeepAliveTimeSeconds:
metric_type: gauge
alias: undertow.keep.alive.time.seconds
- 起動コマンド
java \
-javaagent:/xxx/dd-java-agent.jar \
-Ddd.agent.port=9529 \
-Ddd.service=demo \
-Ddd.jmxfetch.check-period=1000 \
-Ddd.jmxfetch.enabled=true \
-Ddd.jmxfetch.config.dir=/xxx/ \
-Ddd.jmxfetch.con]fig=undertow.yaml \
-jar xxxx.jar
メトリクス¶
- メトリクスセット
undertow
| メトリクス | 説明 | 用途 |
|---|---|---|
| active_count | アクティブスレッド数 | 現在スレッドプールでタスクを実行中のスレッド数。 |
| completed_task_count | 完了済みタスク数 | スレッドプールの起動以来に完了したタスクの総数。 |
| core_pool_size | コアスレッドプールサイズ | スレッドプールで常にアクティブに保たれるスレッド数。アイドル状態でも維持されます。 |
| io_thread_count | I/O スレッド数 | Undertow の基盤となる XNIO フレームワークでネットワーク I/O イベント(接続受付、データの読み書きなど)を処理するスレッド数。 |
| keep_alive_time_seconds | スレッドの維持時間 | スレッド数がコアスレッド数を超えたとき、余分なアイドルスレッドが終了されるまで待機できる時間。 |
| largest_pool_size | 過去最大スレッドプールサイズ | スレッドプールの起動以来に到達した最大スレッド数。 |
| largest_queue_size | 過去最大キューサイズ | タスクキューの起動以来に到達した最大タスク数。 |
| max_pool_size | 最大スレッドプールサイズ | スレッドプールが作成できる最大スレッド数。並行処理能力を制限する重要な設定値です。 |
| max_queue_size | 最大キューサイズ | タスクキューに格納できる最大タスク数。 |
| pool_size | 現在のスレッドプールサイズ | 現在スレッドプール内にある総スレッド数(アクティブスレッドとアイドルスレッドを含む)。 |
| queue_size | 現在のキューサイズ | 現在タスクキューで実行待ちのタスク数。継続的な増加は処理能力不足を示すことが多いです。 |
| rejected_task_count | 拒否されたタスク数 | スレッドプールが満杯(スレッド数が最大に達し、かつキューも満杯)になった、または拒否ポリシーが発動したために実行を拒否されたタスク数。 |