アプリケーション性能カウンター
WhaTapエージェントは、アプリケーションのパフォーマンスに関するさまざまな情報を収集します。情報は、大きく3つに分類できます。
-
User:リアルタイムユーザーまたは訪問ユーザー
-
Service :トランザクション、SQL、外部呼び出し件数および応答、エラー率など
-
Resource:システム、プロセスリソースの使用量
User Counter
ユーザーは、モニタリング対象システムを使用するクライアントを意味します。クライアントは通常、ブラウザに基づいてユーザー数を計算します。
ウェブシステムのパフォーマンスでは、ユーザーが負荷の始まりであるため重要です。ユーザーを追跡するためには、ユーザーを分類する方法とカウント方法を検討する必要があります。
ユーザー区分
WhaTapエージェントのユーザーを区別するためのさまざまなオプションを提供します。
-
Remote IP
既定値は、remote ipを使用してユーザーを区別します。remote ipは、実際のユーザーを区別するには制限があります。
-
Cookie
クッキーを使用してユーザーを区別します。すべての接続クライアントを対象にWHATAPというクッキーに、UUIDは保存されています。
whatap.conftrace_user_using_ip=false
# Java agent v2.2.0 or later
wclient_using_ip=false -
Header Key
HTTP headerに渡される値でユーザーを区別できます。
whatap.confuser_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で計算します。
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されるクラスです。
com.zaxxer.hikari.pool.HikariPool
org.apache.commons.dbcp.BasicDataSource
org.apache.commons.dbcp2.BasicDataSource
org.apache.tomcat.dbcp.dbcp.BasicDataSource
org.apache.tomcat.dbcp.dbcp2.BasicDataSource
org.apache.tomcat.jdbc.pool.ConnectionPool
weblogic.jdbc.common.internal.ConnectionPool
jeus.jdbc.connectionpool.ConnectionPoolImpl
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
-
オプション自動決定の内容を確認してください。
-
関連付けられたpoolのオプション値を
false
として宣言します。 -
DataSource関連オプション値を
true
に変更してください。既定値はfalse
です。whatap.conftomcat_ds_enabled=false
weblogic_ds_enabled=false
ThreadPoolカウンター
ThreadPoolカウンターは、JMX Mbean情報から収集されます。Tomcatなどの使用事例が多数ある場合は問題ありませんが、特定の環境では、この指標が収集されない可能性があります。
収集には追加設定が必要です。関連する設定は次のとおりです。
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 既定値は、エージェント設定メニューから変更できます。