本文へスキップ

インスタンス性能管理の活用

インスタンス性能管理メニューは、アプリケーションの環境を確認し、性能を管理するのに役立つ機能を提供します。 インスタンス性能管理でよく使用する主要メニューの詳細及び活用例を次のように案内します。

ロード済クラス

ホーム画面 > プロジェクト選択 > インスタンス性能管理 > ロード済クラス

ロード済クラスメニューは、アプリケーションにロードされたクラスの構造とメソッドシグネチャーなどの詳細情報を提供し、また中断なくクラス動作を変更できるように再定義機能を提供します。

再定義

再定義は、InstrumentationredefineClassesメソッドを呼び出し、アプリケーションを中断させることなく、ランタイム中にすでにロードされたクラスの動作を変更できるようにします。 これは、運用中のサービスに対する修正や変更が必要な場合に役立ちます。 例えば、新しいサービスパターンの指定で追加のトランザクションの開始点を設定し、応答時間を測定しようとするとき、関連するWhaTap設定の変更後、そのクラスをロード済クラスリストから探し修正アイコンアイコンをクリックして再定義できます。

ロード済クラス再定義

リソース

リソースカラムを通じて、そのクラスが物理的にどのファイルからロードされたかを照会できます。 Javaアプリケーションの多階層構造の特性上、このようなリソース情報の確認が必要です。 複雑なアプリケーション環境では、クラスが正確にどのようなjarファイルからロードされているかを把握することが重要です。

特定のクラスが意図しないjarファイルからロードされた場合、予期しない動作やバグが発生する可能性があります。 特に、複雑なクラスパスやマルチモジュール環境では、正確にどの経路でロードされたかを確認して、容易なデバッグが可能です。

スレッドリスト/ダンプ

ホーム画面 > プロジェクト選択 > インスタンス性能管理 > スレッドリスト/ダンプ

スレッドリスト/ダンプメニューは、現在実行中のスレッドのリストを確認し、そのスレッドの個々のスナップショット及び全体のスレッドダンプ情報を照会できます。 ヒットマップがトランザクション応答時間中心の最適化作業の核心であれば、スレッドリスト/ダンプはCPU最適化の核心要素と言えます。これはアプリケーションの性能最適化、問題診断、そして安定性維持に重要な役割を果たします。

どのスレッドがCPUを多く使用しているかを把握することは、ボトルネックの発生原因を識別する上で重要です。 特に、特定の時間帯にCPU使用が急増したスレッド識別のために、時系列データを照会できる必要があります。 スレッドリスト/ダンプメニューのスレッドCPU時間は、当該スレッドがCPUを占有した合計累積時間を意味します。 更新時、現在のスレッドCPU時間と既存のスレッドCPU時間の差である増加量を提供することで、照会時点で最も多くCPUを使用しているスレッドを特定できます。 増加量カラムをクリックし、降順でのソートで増加量が最も高いスレッドを確認してみてください。

スレッドリスト/ダンプデルタ値

このようにスレッドを特定した後、そのスレッドのスナップショットを確認して、頻繁に呼び出されたり、長く実行されるメソッドなどを確認できます。 これにより、異常な兆候を早期に発見し、対応してシステムを安定的に管理できます。

スレッドリスト/ダンプ個別スレッドダンプ

CPU使用量の高いスレッドの確認

アプリケーションCPU使用量が急増した場合は、様々な原因に起因する可能性があります。 これを、ヒープメモリがいっぱいの場合、実際のリクエストが多い場合、そしてロジックの問題の場合の3つのタイプに分類できます。

このとき、最初に確認するのは識別しやすいヒープメモリです。 ヒープメモリがいっぱいになった場合、JVMがGCを頻繁に実行し、CPU使用量が急増する可能性があります。 この場合、アプリケーションダッシュボードヒープメモリグラフで簡単に確認できます。 2つ目は、実際のリクエストが多いことで、アプリケーションが多い数のクライアントリクエストを処理し、CPU使用量が高くなった場合です。 各リクエストはJavaスレッドを生成して処理されるため、CPUが多くの作業を行うことになります。 この場合、アプリケーションダッシュボードでTPS関連指標を通じて確認できます。

3つ目は、アプリケーションコードに非効率的なアルゴリズムや無限ループなどが含まれている場合、CPU使用率が異常に高くなる可能性があります。 この場合、スレッドリスト/ダンプメニューを通じてCPU使用量が高いスレッドを特定した後、該当スレッドダンプを確認して問題になるコードを確認できます。

ノート

スレッドCPU時間確認→ リフレッシュ増加量基準でリストをソート→ CPU使用量の高いスレッドの識別