スタック
ホーム画面 > プロジェクト選択 > 分析 > スタック
特定の時間帯の呼び出しスタックの頻度とメソッド、トランザクションに関する詳細情報が確認できます。トップスタッ ク, ユニークスタック, アクティブスタックが照会できます。トップスタックは、呼び出し頻度の高いメソッドの使用量を示し、ユニークスタックは、同じ呼び出しスタックの頻度を分析します。アクティブスタックは、実行中のトランザクションのスタック情報を定期的に収集し、リアルタイムのパフォーマンス分析ができます。
スタック分析機能はJava及びPython、.NETのモニタリングで提供します。
主な機能の案内
次の主な機能を利用できます。スタックの照会により、アプリケーションのパフォーマンスの問題をすばやく識別し、解決できます。特定メソッドの呼び出し頻度、呼び出し経路、応答時間などを確認し、性能向上のための改善策が用意できます。
-
スタックタイプの選択
トップスタック, ユニークスタック, アクティブスタック中から希望するスタックを選択して照会できます。
-
時間選択 / 開始日:照会する時間を設定します。特定の時間帯のスタックを照会したり、目的の期間を設定できます。スタックの種類によっては、照会できる期間が制限されます。
ノートトップスタック及びユニークスタックを照会できる最大期間は3日です。
-
アプリケーション:照会するエージェントを選択できます。特定のエージェントを選択でき、何も選択しないとプロジェクトに含まれるすべてのエージェントを対象に照会します。
-
カラム選択:希望するカラム項目を表示または非表示します。
-
比較する:同じフィルター条件で1日以内に照会する際、選択したスタックを別の時間帯と比較できます。この機能で、時間による呼び出しスタックの変化を把握し、性能のトレンドを確認できます。詳細については、次の文書を参照にしてください。
-
:各スタック タイプのテーブル リストからスタックまたはトランザクション項目を拡張すると、一番右側にスナップショット アイコンが表示されます。このアイコンを選択すると、スタックまたはトランザクション情報を画像ファイルに保存できます。
基本的な使い方
-
画面から照会するスタックタイプを選択します。
-
時間選択または開始日で希望する照会時間を設定します。
-
アプリケーションで、照会するエージェントを選択します。何も選択しないと、エージェント全体を対象に照会します。
-
ボタンを選択してください。
照会結果をスタックテーブルの一覧から確認できます。
トップスタック
トップスタックでは、呼び出し頻度が最も高いメソッドの情報を提供します。スタックの最上段に位置するメソッドの呼び出し頻度により、サービスに最も影響を与えるメソッドを素早く確認できます。メソッドの呼び出し頻度を把握し、CPUまたはメモリに負荷がかかる原因を分析できます。この機能で性能改善に必要な対策を講じられます。
WhaTapは、10秒(既定値) 間隔で収集したThread Stackを使用して、メソッドレベルの性能遅延を分析します。
project (/home/ubuntu/python-sample/test/views/test.py:69)
_get_response (/home/ubuntu/.local/lib/python3.10/site-packages/django/core/handlers/base.py:197)
inner (/home/ubuntu/.local/lib/python3.10/site-packages/django/core/handlers/exception.py:56)
__call__ (/home/ubuntu/.local/lib/python3.10/site-packages/django/utils/deprecation.py:136)
inner (/home/ubuntu/.local/lib/python3.10/site-packages/django/core/handlers/exception.py:56)
__call__ (/home/ubuntu/.local/lib/python3.10/site-packages/django/utils/deprecation.py:136)
inner (/home/ubuntu/.local/lib/python3.10/site-packages/django/core/handlers/exception.py:56)
__call__ (/home/ubuntu/.local/lib/python3.10/site-packages/django/utils/deprecation.py:136)
inner (/home/ubuntu/.local/lib/python3.10/site-packages/django/core/handlers/exception.py:56)
__call__ (/home/ubuntu/.local/lib/python3.10/site-packages/django/utils/deprecation.py:136)
inner (/home/ubuntu/.local/lib/python3.10/site-packages/django/core/handlers/exception.py:56)
__call__ (/home/ubuntu/.local/lib/python3.10/site-packages/django/utils/deprecation.py:136)
inner (/home/ubuntu/.local/lib/python3.10/site-packages/django/core/handlers/exception.py:56)
__call__ (/home/ubuntu/.local/lib/python3.10/site-packages/django/utils/deprecation.py:136)
inner (/home/ubuntu/.local/lib/python3.10/site-packages/django/core/handlers/exception.py:56)
...
例のスタックからトップラインはproject
です。
project (/home/ubuntu/python-sample/test/views/test.py:69)
トップラインは、実行中のスレッドが該当メソッドを実行していることを意味します。途中でキャプチャされた可能性もありますが、確率的には各モジュールの処理時間の合計の比率でスタックに現れます。このトップラインメソッドの頻度を計算してメソッドレベルのパフォーマンスを判断できます。WhaTapは、トップラインの頻度統計をトップスタック(Top Stack)と呼びます。
トップスタック分析で現れたメソッドをどのメソッドが呼び出したかを頻度で分析できます。Stack Traceの各ステップで、ステップとステップの間で呼び出した比率をパーセンテージで分析した情報を提供します。最上位ステップから呼び出したステップの頻度をパーセンテージで計算し、降順に並べ替えた結果を表示します。
各ステップ項目の一番左にあるボタンを選択すると、そのステップを呼び出す上位ステップの呼び出し頻度をパーセンテージで提供します。
トップスタック統計は充分に多いデータで判断する必要があります。収集したスタックの数が10個未満の場合、統計的な意 味を持つには不十分です。
トップスタックは、把握しづらい部分のチューニングポイントを見つけるのに役立ちます。呼び出し頻度が最も高いスタックは、アプリケーションサーバーで最も多くの応答遅延が発生していると判断できます。左に表示する比率は、アプリケーションサーバーのパフォーマンスへの影響度です。
安定したアプリケーションサーバーであっても、呼び出し頻度の高いスタックは性能の低下を引き起こす可能性があるため、そのクラスは注意深く見ることをお勧めします。
トップスタックをクリックすると、その最上位スタックに対する呼び出し頻度が確認できます。トップスタックの呼び出し関係は1対1なので、トップスタックのdepthが下がるほど情報の精度が低下する可能性があります。チューニング作業を行う際には、下位depthの情報は参照レベルで考えてください。
アプリケーションのパフォーマンス改善のため、最上位ステップへの呼び出し比率が高いモジュールのボトルネックを調べる必要があります。呼び出し比率が高いモジュールの場合、小さな性能改善でも、アプリケーション全体に大きな改善効果がある場合があります。