本文へスキップ

アプリケーション性能カウンター

WhaTapエージェントは、アプリケーションのパフォーマンスに関するさまざまな情報を収集します。情報は、大きく3つに分類できます。

  • User:リアルタイムユーザーまたは訪問ユーザー

  • Service :トランザクション、SQL、外部呼び出し件数および応答、エラー率など

  • Resource:システム、プロセスリソースの使用量

User Counter

ユーザーは、モニタリング対象システムを使用するクライアントを意味します。クライアントは通常、ブラウザに基づいてユーザー数を計算します。

ウェブシステムのパフォーマンスでは、ユーザーが負荷の始まりであるため重要です。ユーザーを追跡するためには、ユーザーを分類する方法とカウント方法を検討する必要があります。

ユーザー区分

WhaTapエージェントのユーザーを区別するためのさまざまなオプションを提供します。

  • Remote IP

    既定値は、remote ipを使用してユーザーを区別します。remote ipは、実際のユーザーを区別するには制限があります。

  • Cookie

    クッキーを使用してユーザーを区別します。すべての接続クライアントを対象にWHATAPというクッキーに、UUIDは保存されています。

    whatap.conf
    trace_user_using_ip=false

    # Java agent v2.2.0 or later
    wclient_using_ip=false
  • Header Key

    HTTP headerに渡される値でユーザーを区別できます。

    whatap.conf
    user_header_ticket=USER

    # Java agent v2.2.0 or later
    wclient_header_ticket=USER

ユーザーカウント

ユーザーのカウント方法によって異なります。リアルタイムユーザーは、現在のシステムを使用しているユーザーの数を知るために測定します。毎日の訪問ユーザーは、日中にサービスに関心を持っているユーザーの数をビジネス管理のために測定されます。

  • リアルタイムユーザー

    過去5分間のユーザー数をカウントします。 5秒ごとにshiftingすると、ユーザーをカウントします。 各サーバーでカウントされた数は、HyperLogLogアルゴリズムによってマージされます。

  • 毎日の訪問者(DAU, Daily Active User)

    1日にシステムに接続したユーザーをカウントします。24時間接続したユーザーをHyperLogLogで計算します。

Tips

WhaTapでは、長期間ユーザーをカウントするために、ユーザーデータに対するbyte blockをサーバーで収集します。このデータをHyperloglogでマージすると、理論的には1ヶ月以上の訪問ユーザーを計算できます。

Service Counter

トランザクションによって使用されたSQLまたは外部呼び出しの件数、応答時間、エラー件数などのパフォーマンス指標が含まれます。

  • Transaction Counter

    トランザクションを実行すると、測定するのはカウンターです。

    • 件数
    • 応答時間
    • エラー件数
  • Active Transaction Counter

    進行中のトランザクションの数をカウントします。

    • 件数

    • Active Status

      進行状況は、METHOD, SQL, HTTPC, DBC, SOCKETの5つの状態で固定されます。

      • METHOD - 一般関数を呼び出す状態
      • SQL - DB SQLの実行中の状態
      • HTTPC - 外部HTTP API(サービス)を呼び出しの状態
      • DBC - DB接続を要求された状態、通常はPoolから取得
      • SOCKET - TCPセッションに接続を要求している状態
  • SQL

    SQLの実行状況をカウントします。

    • 件数
    • 応答時間
    • エラー件数
    • フェッチ件数
  • HTTP Call

    外部HTTPリクエストの状況をカウントします。

    • 件数
    • 応答時間
    • エラー件数

Resource Counter

サーバーリソースまたはNodeプロセス内のリソース使用量をカウントします。


  • CPU (sys, usr, wait, steal, irq, cores)

    CPU使用率%です。各種類別に収集されます。仮想環境のみ、Stealが意味を持ちます。Cpu Coreの数も収集されます。

  • Process CPU

    Javaプロセスが使用するCPU%です。

  • Memory

    システムメモリの使用率(%)です。

  • Swap

    Swapメモリの使用率(%)です。

  • Disk

    Diskは、Java ProcessのCurrentディレクトリの使用率(%)です。

  • Heap (Total, Used, Perm)

    Java HeapメモリのTotal、Used、Perm量です。データ単位はKBytesです。

  • GC (Count, Time)

    5秒間に発生したGCインシデント件数と時間の合計です。

  • ObjectPendingFinalizationCount

    GC呼び出し中にfinalize() を実行するために待機しているオブジェクトの数です。この値が大きくなると、GCtimeが遅れる可能性があります。

  • Thread (start Count, Count, Daemon, Peak Count)

    JVMが実行されてから開始されたスレッド数、現在実行中のスレッド、デーモン、最大スレッド数を収集します。例えば、スレッドプールが必要かどうかを判断できます。

  • DB Connection Count (active,idle)

    Connection Poolのidleとactiveカウントを収集します。

  • Tomcat Thread Pool (active, queueSize)

    トムキャットのExecutorは、スレッドプールの設定時にパフォーマンス情報を収集します。

    XML
        <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
    maxThreads="50" minSpareThreads="2" maxQueueSize="78"/>

DB Connection Poolカウンター

DB Connection Poolは、DataSourceと呼ばれます。WASによって提供される場合が一般的ですが、オープンソースPoolを使用することもあります。使用量の情報がJMXに公開されることがありますが、多くの場合は公開されません。

WhaTapは2つの方式を提供しています。1つのBCIによる直接問い合わせ方法とJMXを利用した方法です。デフォルトは、BCI方法を使用し、サブとしてJMXを使用します。

次の個別のオプションが既定値に関連してByteCodeがInjectionされるクラスです。

hikari_pool_enabled=false
com.zaxxer.hikari.pool.HikariPool
dbcp_pool_enabled=true
org.apache.commons.dbcp.BasicDataSource
org.apache.commons.dbcp2.BasicDataSource
org.apache.tomcat.dbcp.dbcp.BasicDataSource
org.apache.tomcat.dbcp.dbcp2.BasicDataSource
tomcat_pool_enabled=true
org.apache.tomcat.jdbc.pool.ConnectionPool
weblogic_pool_enabled=true
weblogic.jdbc.common.internal.ConnectionPool
jeus_pool_enabled=true
jeus.jdbc.connectionpool.ConnectionPoolImpl
jboss_pool_enabled=true
org.jboss.jca.core.connectionmanager.pool.PoolStatisticsImpl
注意

BCI関連のオプションで変更する場合、再起動する必要があります。クラスがinstrumentされた後も、追跡テーブルに登録する必要があります。したがって、実行中のredefineは機能しません。

DataSourceの状況をJMXに読み込む

dbcp_pool_enabled==trueの場合、tomcat_ds_enabled=false
weblogic_pool_enabled== trueの場合、weblogic_ds_enabled=false
  1. オプション自動決定の内容を確認してください。

  2. 関連付けられたpoolのオプション値をfalseとして宣言します。

  3. DataSource関連オプション値をtrueに変更してください。既定値は false です。

    whatap.conf
    tomcat_ds_enabled=false
    weblogic_ds_enabled=false

ThreadPoolカウンター

ThreadPoolカウンターは、JMX Mbean情報から収集されます。Tomcatなどの使用事例が多数ある場合は問題ありませんが、特定の環境では、この指標が収集されない可能性があります。

収集には追加設定が必要です。関連する設定は次のとおりです。

whatap.conf
jmx_threadpool_objectname=Catalina:type=ThreadPool,name="http-bio-8080"
// JMX ThreadPool MBean名前を設定します。
jmx_threadpool_atter_activecount=connectionCount
// activecount数を表すattributeを設定します。
jmx_threadpool_atter_queuesize=maxThreads
// maxThreads数を表すattributeを設定します。

JMX ThreadPool ObjectNameやAttributeNameなどのMbean名は、JMXモニタリングツールを使用して確認または、各WASのMbean文書を参照してください。

ノート

使用中のWAS、フレームワーク関連文書を参照してMbean情報を確認してください。

Jconsole使用時

  • ObjectName : Catalina

    type : ThreadPool

    name : "http-bio-8080"

  • ActiveName : connectionCount

    QueueName : maxThreads

結果確認

正常に設定された場合、カウンターで次のようにデータを検索することができます。

パフォーマンスカウンター - 正常状態

Apdex

Apdex(Appliccation Performance Index)は、オープン標準に従うアプリケーションのパフォーマンス指標です。Apdexは応答時間に基づいており、全体の要求の中で満足と許容の割合で数値化します。 ダッシュボードにApdexグラフが追加されました。

Apdexはユーザー満足度の指標として使用でき、0~1の値です。

(満足回数+ (許容回数*0.5))/全体リクエスト数

状態説明
満足 (Satisfied, S)業務処理に全く問題なし≤ 1.2秒 (満足S既定値)
許容(Tolerating, T)使用者が遅延を感じるが業務処理は可能≤ 4.8秒(満足S * 4)
不満(Frustrated, F)業務処理が不可能> 4.8秒(許容T超過及びエラー)
  • whatap.apdex_time millisecond

    既定値1200

    満足 S 既定値は、エージェント設定メニューから変更できます。