本文へスキップ

トランザクション分析

ヒットマップ

ホーム画面 > プロジェクト選択 > 分析 > ヒットマップ

WhaTapモニタリングサービスのホーム画面でプロジェクトを選択し、プロジェクトメニューの配下にある分析 > ヒットマップメニューを選択してください。

ノート

ヒットマップは、ダッシュボード > アプリケーションダッシュボードヒットマップウィジェットからもアクセスできます。

詳細分析

ヒットマップ

number1エージェント領域

現在のプロジェクトと関連づけられたエージェントを選択すると、フィルタリングすることができます。アイコン 虫眼鏡アイコンを選択すると、number2領域でヒットマップトランザクションチャートが表示します。

number2ヒットマップトランザクションチャート

遅延の問題があるトランザクションが含まれている場合ヒットマップトランザクションチャートに、オレンジで表示されます。通常のトランザクションが含まれている場合、で表示されます。

number3選択

リアルタイムヒットマップチャートをドラッグすると、number4 エージェント一覧とトランザクション情報を確認できます number5 TXトレース 一覧が表示されます。

number4エージェント一覧

チャートで選択された領域に含まれるトランザクション数とエラー数を確認できます。一覧から目的のアプリケーションを選択し、number5TXトレース一覧に詳細が表示されます。

number5TXトレース一覧

TXトレース一覧に詳細情報が含まれています。一覧から目的のトランザクションを選択すると、統計情報ウィンドウが表示されます。統計ウィンドウでは、トランザクションのトレースの詳細分析を確認することができます。詳細については、次の文書を参照してください。

ヒットマップパターンを理解する

ヒットマップは、トランザクションの終了時間をX軸、レスポンス時間をY軸とした分布チャートです。通常のWebアプリケーションは、数秒以下の集中分布を表示します。

hitmap-pattern

ヒットマップラインの分析

  • 縦線(LOCK現象) パターン

    トランザクション処理中に一時的なロック(Notonly DB Lock)が発生すると処理が待機されます。ロックが解除されると、処理待機中のトランザクションは同じ時間帯で同時に終了します。これにより、次のように垂直線が作成されます。

    hitmap-lock

    垂直パターンでロックを検知することは非常に強力な概念です。特にマイクロサービスアーキテクチャでは、バックエンドシステムで発生するロックについても同様に検知できます。

    hitmap-front-api-db

    Frontアプリケーションのレスポンスパターンの縦線は、バックエンドシステムが使用するDBでロックが発生した場合も検知されます。

  • 横線(タイムアウト) パターン

    10秒のタイムアウト条件でリソースが不十分な場合、トランザクションは10秒間待機後にタイムアウトエラーが発生します。この時点で、ヒットマップの約10秒後に、次のような横線が作成されます。

    hitmap-timeout

    タイムアウト後に再実行するロジックがある場合は、図のような横線が10秒単位で繰り返されます。以下は、実際のトラブル状況のヒットマップです。

    hitmap-error

    (1) セクションでレスポンス時間が増加し、(2) セクションの赤い線は典型的な横線パターンです。(1) セクションの負荷によりConnectionPoolが使い果たされ、(2) セクションはConnectionPoolの不足で2回目のタイムアウトトラブルが発生した状態です。

パターン分析活用

トランザクションレスポンスの分布に線が表示されている場合は、ボトルネックがあることを意味します。一時的なロッキングの場合は縦線が作成され、ボトルネックがタイムアウトになると横線が作成されます。

hitmap-pattern-analysis

問題を分析する場合、行に含まれるトランザクションのみを選択的に分析して、問題をすばやくに発見することができます。

機械学習ベースの応答パターン分析

機械学習技術によりヒットマップパターンを分析し、異常を自動検知してアラートを発報する機能です。

Machine learning analytics

異常パターンの例

毎月数百TBのパフォーマンスデータから異常パターンを学習し、学習した異常パターンと同様のパターンが発生するとアラートを発報します。

  • 縦線パターン

    hitmap-abnormal1

  • 横線パターン

    hitmap-abnormal2

  • 複合パターン

    hitmap-abnormal3

  • ヒットマップ通知

    hitmap ai alert

ノート

ヒットマップトランザクションチャートを分析する方法についての詳細は、次の文書を参照してください。

Javaエージェントの例外処理(WARNING) 基準

Java言語を使用するアプリケーション環境で発生するエラーをJavaエージェントが例外処理する基準について案内します。次の内容は、Javaエージェントv2.2.27 基準で作成されました。

サービス画面でのエラー表示

hitmap, Trace analysis

ヒットマップウィジェット、トレース分析ウィンドウから確認できるエラーレベルは、大体WARNINGレベルに該当します。

Spring ExceptionHandler通過時のエラー処理

Springフレームワークでは、org.springframework.web.servlet.DispatcherServlet.processHandlerException メソッドを通過する場合、エラーとして処理します。ただ、開発者がTry-Catch文を使用する場合は、ExceptionHandlerを通過しませんので、WhaTapではエラー処理を行いません。

Status Code 400以上のエラー処理

HTTPレスポンスコードが400以上の場合は、例外クラス(Exception Class)が発生しなくてもエラーとして処理します。

JDBC driver呼び出し時のエラー処理

JDBC接続呼び出しやSQL実行呼び出し時に発生するエラーはエラーとして処理されます。

HTTP callエラー処理

HTTP呼び出し中に発生するエラーは、SLOW_HTTPChttpc errorなどの形で表示されます。

WhaTapエラー処理

WhaTapモニタリングサービスでは、特定の条件に従ってエラーとして処理します。

  • TOO_MANY_RECORDS:fetch件数10000件以上

  • SLOW_SQL:SQL時間30000ms以上

  • SLOW_HTTPC:HTTP call経過時間が10000ms以上

  • httpc error:HTTP call status code 400以上の場合

  • status error:トランザクションstatus code 400以上の場合

トランザクションエラー段階のINFO処理

エージェント設定により、一部のエラーを正常な状態で表示または無視できます。ヒットマップウィジェットで表示されるレベルは、INFO(青)です。

ノート

エージェント設定は、whatap.confファイルを編集するか管理 > エージェント設定メニューで確認できます。詳しい内容は、次の文書を参考にしてください。

  • biz_exceptions:レコードエラー表示

    whatap.conf
    biz_exceptions=io.home.test.baseapp.base.exception.custom.CustomParameterizedException
  • ignore_exceptions:レコードエラー未表示

    whatap.conf
    ignore_exceptions=org.springframework.web.util.NestedServletException
  • status_ignore

    whatap.conf
    status_ignore=408,500,200
  • httpc_status_ignore

    whatap.conf
    httpc_status_ignore=403,401
  • status_ignore_set

    whatap.conf
    status_ignore_set=/api/posts/test/timeout:200,/error:500
  • httpc_status_url_ignore_set

    whatap.conf
    httpc_status_url_ignore_set=/api/posts/test/timeout:408,/api/apache/httpclient/posts/timeout:500