コンテンツにスキップ

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 をダウンロード

SDK

  • 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 拒否されたタスク数 スレッドプールが満杯(スレッド数が最大に達し、かつキューも満杯)になった、または拒否ポリシーが発動したために実行を拒否されたタスク数。

フィードバック

このページは役に立ちましたか?