パフォーマンス分析のためのイベントログの参照ガイド
公開日: 2022.03.30
この記事で学べること
イベントモニタリングに含まれる2種類のログを理解し、パファーマンス分析のために、確認したいケースごとにどのログのどの項目を参照することにより、ボトルネックやチューニングのポイントを確認することができるか理解できます。
イベントモニタリングに含まれる2種類のログの違い
イベントモニタリングライセンスには、以下2種類のログが含まれます。
- リアルタイムイベントモニタリング:セキュリティインシデントの発生ログとレコードへのアクセスログ
- イベントモニタリング:イベント発生 / エラー / パフォーマンス分析用のイベントログ
この2種類のログの違いの詳細については、以下の記事をご参照ください。
ここでは、パフォーマンス分析用のログとしてイベントモニタリングのログを対象に説明しています。
パフォーマンス監視の重要性
生産性向上を実現するために導入したせっかくのシステムもレスポンスが悪く利用にストレスがあると利用が促進されない場合があります。パフォーマンスはシステムを利用するにあたって重要な要因です。しかしパフォーマンスは様々な要因で劣化してしまいます。例えば、大量データの取り扱い、データベースのインデックス、冗長なロジックのコード、またお客様環境においてもネットワークやクライアントの環境によってもパフォーマンス劣化が発生します。そのため継続的なパフォーマンスの監視はシステムの導入を成功に導くために重要なポイントとなります。
イベントモニタリングによるログの取得
多くのイベントログに要求の完了にかかった CPU 時間 (CPU_TIME)が記録されます。また、APEX実行に関するログにはデータベースのパフォーマンスに係る数値(DB_TOTAL_TIME)が記録されます。
パフォーマンスの問題が発生した際は、イベントログから要求の完了に係ったCPU時間とデータベースの処理にかかった時間を比較することで、パフォーマンス上の問題が独自のコードの部分にあるかデータベースレイヤのどちらにあるか、またはクライアント環境に起因するものか判断することが出来ます。
また、大まかに処理に時間がかかった部分を判断した上で、デバッグログの設定をしていただく事でより具体的にどの処理に時間を要したか、効率よく確認をしていく事が可能となります。
ヘルプ : デバッグログの設定
取得するべきイベントログファイル
以下にパフォーマンスに関する調査において参考となるイベントログファイルおよびその項目について例示をします(表中黄色いハイライト部分は、ログ対象のイベントを特定する項目です)。各イベントログファイルの内容については以下をご参照ください。
SOAP API開発ガイド:EventLogFile でサポートされているイベント種別
Lightning Experience および Salesforce モバイルアプリケーションでイベントが発生したページに関する情報を表します。Lightning ページビューイベントは、ユーザがアクセスしたページ、そのページにユーザが滞在した時間、ページの読み込み時間を追跡します。
Summer ‘22のリリースで、EFFECTIVE_PAGE_TIME_DEVIATION、EFFECTIVE_PAGE_TIME_DEVIATION_ERROR_TYPE、および EFFECTIVE_PAGE_TIME_DEVIATION_REASONの3項目が追加されました。これらの項目によりページのロードに時間がかかる原因の特定が容易になります。
| 項目名 | 説明 |
| PAGE_URL | ユーザが開いた最上位の Lightning Experience ページまたは Salesforce モバイルアプリケーションページの相対 URL。ページには、1 つ以上の Lightning コンポーネントを含めることができます。複数のレコード ID を PAGE_URL に関連付けることができます。 |
| EFFECTIVE_PAGE_TIME | ページを読み込んでからユーザがページの機能を操作できるようになるまでにかかった時間 (ミリ秒) を示します。実効ページ時間は、複数の要素 (ネットワーク速度、ハードウェアパフォーマンス、ページの複雑さなど) の影響を受けます。60 秒を超える有効なページ時間が検出された場合、この項目の値は null に設定されます。 |
| EFFECTIVE_PAGE_TIME_DEVIATION | 逸脱が検出されると EFFECTIVE_PAGE_TIME_DEVIATION はtrueを記録します。デフォルト値はfalseです。 |
| EFFECTIVE_PAGE_TIME_DEVIATION_REASON | ページ読み込み時間の逸脱の理由が記録されます。値の意味についてはLightning ページビューイベント種別からAPI version v55.0以降をご確認ください |
| EFFECTIVE_PAGE_TIME_DEVIATION_ERROR_TYPE | このフィールドはEFFECTIVE_PAGE_TIME_DEVIATION_REASONにPAGE_HAS_ERRORが記録された場合に入力されます。入力されうる値はCUSTOMまたはSYSTEMとなります。 ・CUSTOM : 顧客システムまたはネットワークに起因するエラー ・SYSTEM : セールスフォースに起因するエラー |
Lightning Experience および Salesforce モバイルアプリケーションのパフォーマンスのトレンドを追跡します。レコードに対するユーザアクションに関する所要時間が把握できます。
| 項目名 | 説明 |
| UI_EVENT_SOURCE | レコードに対するユーザアクション(作成/編集/削除/参照など)。この項目の値は、ユーザのアクションが 1 つのレコードに対して実行されたか複数のレコードに対して実行されたかを示します。たとえば、read は (レコード詳細ページなどで) 1 つのレコードが参照されたことを示し、reads は (リストビューなどで) 複数のレコードが参照されたことを示します。 |
| DURATION | ページ開始時刻からの時間 (ミリ秒)。 |
実行された Apex クラスに関する詳細が含まれます。
| 項目名 | 説明 |
| URI | 要求を受信しているページの URI。 |
| NUMBER_SOQL_QUERIES | イベント中に実行された SOQL クエリ数。 |
| IS_LONG_RUNNING_REQUEST | 要求が実行時間が長い組織の同時 Apex 要求の上限にカウントされるか (true)、否か (false) を示します。 |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU使用率にカウントされません。 |
| DB_TOTAL_TIME | 要求のすべての操作について、データベース処理の待機にかかった時間の集計 (ミリ秒)。この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。 |
| EXEC_TIME | エンドツーエンドの Apex 実行時間 (単位: ミリ秒)。 |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。要求の値が 5 秒を超える場合、同時長時間実行の Apex 制限により、長時間実行の要求と見なされます。Salesforce/第三者へのリクエストにかかる時間で、HTTPコールアウト、REST/SOAPコールなどが含まれる場合があります。 |
すべての Apex REST API 要求に関する情報を取得します。
| 項目名 | 説明 | | |
| URI | 要求を受信しているページの URI。 | | |
| ROWS_PROCESSED | 要求で処理された行数。 | | |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU使用率にカウントされません。 | | |
| DB_CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。要求時にデータベースレイヤで実行されているアクティビティ量を示します。 | | |
| DB_BLOCKS | データベースで発生しているアクティビティ量を示します。この項目の値が高い場合、クエリにインデックスまたは検索条件を追加するとパフォーマンスが向上します。 | | |
| DB_TOTAL_TIME | データベース往復処理の時間 (ナノ秒単位)。JDBC ドライバー、データベースへのネットワーク、および DB_CPU_TIME で費やされた時間を含みます。この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。 | | |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。 | | |
Web サービス API コールに関する詳細が含まれます。
| 項目名 | 説明 |
| CLASS_NAME | Apex クラス名。クラスが管理パッケージの一部である場合、この文字列にはパッケージ名前空間が含まれます。 |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU時間にカウントされません。 |
| DB_TOTAL_TIME | 要求のすべての操作について、データベース処理の待機にかかった時間の集計 (ミリ秒)。この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。 |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。要求の値が 5 秒を超える場合、同時長時間実行の Apex 制限により、長時間実行の要求と見なされます。Salesforce/第三者へのリクエストにかかる時間で、HTTPコールアウト、REST/SOAPコールなどが含まれる場合があります。 |
組織で起動されたApexトリガに関する詳細が含まれます。
| 項目名 | 説明 |
| TRIGGER_ID | 起動されたトリガの 15 文字の ID。 |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU時間にカウントされません。 |
| DB_TOTAL_TIME | 要求のすべての操作について、データベース処理の待機にかかった時間の集計 (ミリ秒)。この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。 |
| EXEC_TIME | エンドツーエンドの Apex 実行時間 (単位: ミリ秒)。Salesforce/第三者へのリクエストにかかる時間で、HTTPコールアウト、REST/SOAPコールなどが含まれる場合があります。 |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。要求の値が 5 秒を超える場合、同時長時間実行の Apex 制限により、長時間実行の要求と見なされます。Salesforce/第三者へのリクエストにかかる時間で、HTTPコールアウト、REST/SOAPコールなどが含まれる場合があります。 |
非同期レポート実行イベントは、スケジュールされたレポート要求に対して作成されます。このカテゴリには、ダッシュボードの更新、非同期レポート、スケジュールレポート、分析スナップショットが含まれます。
| 項目名 | 説明 |
| REPORT_ID | 実行されたレポートの 15 文字の ID。 |
| ROW_COUNT | 非同期レポート実行イベントで処理された行数。 |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU時間にカウントされません。 |
| DB_BLOCKS | データベースで発生している活動量を示します。この項目の値が高い場合、クエリにインデックスまたは検索条件を追加するとパフォーマンスが向上します。 |
| DB_TOTAL_TIME | 要求のすべての操作について、データベース処理の待機にかかった時間の集計 (ミリ秒)。この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。 |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。要求の値が 5 秒を超える場合、同時長時間実行の Apex 制限により、長時間実行の要求と見なされます。Salesforce/第三者へのリクエストにかかる時間で、HTTPコールアウト、REST/SOAPコールなどが含まれる場合があります。 |
組織の同時実行制限に達した後に Salesforce によって終了された、組織内の実行時間が長い同時 Apex 要求に関する情報が含まれます。確立された Apex コンテキストが 5 秒間実行される要求は、実行時間が長い同時要求の組織の制限に含まれます (非同期要求は制限に含まれません)。実行時間が長い要求数が 10 (組織のデフォルトの制限) を超えた場合、その他の実行時間が長い要求は終了されます。
| 項目名 | 説明 |
| REQUEST_URI | Salesforce によって終了された実行時間が長い Apex 要求の URI。 |
トランザクション中に実行されたすべての非同期コールアウト、その応答状況コード、実行時間、および対象の URL エンドポイントに関する情報が含まれます。
| 項目名 | 説明 |
| URL | コールアウトエンドポイント URL。継続で使用された HTTP 要求数によっては、この項目に最大 3 個のスペース区切り値が含まれる可能性があります。 |
| DURATION | 合計継続時間 (ミリ秒)。 |
Salesforce Connect のカスタムアダプタを介した外部データコールアウトを表します。
| 項目名 | 説明 |
| ENTITY | アクセスされる外部オブジェクトの名前。 |
| ACTION | コールアウトによって実行されるアクション(query/upsert/delete)。 |
| ROWS_FETCHED | コールアウトによって取得された行の数 |
| ROWS | 結果セットの総レコード数 |
| FETCH_MS | 外部システムからクエリ結果を取得するのに要した時間 (ミリ秒)。 |
| THROUGHPUT | 1 秒間で取得されたレコード数。 |
| EXECUTE_MS | Salesforce がクエリの準備および実行に要した時間 (ミリ秒)。 |
| TOTAL_MS | クエリの準備、実行、およびクエリ結果の取得に要した時間 (ミリ秒) |
Salesforce Connect の OData 2.0 および OData 4.0 アダプタを介した外部データコールアウトを表します。
| 項目名 | 説明 |
| ENTITY | アクセスされる外部オブジェクトの名前。 |
| ACTION | コールアウトによって実行されるアクション(query/upsert/delete)。 |
| ROWS_FETCHED | コールアウトによって取得されたレコードの数。コールアウトによって取得されたレコードは、大きな結果セットのサブセットである場合があります |
| ROWS | 結果セットの総レコード数 |
| FETCH_MS | 外部システムからクエリ結果を取得するのに要した時間 (ミリ秒) |
| THROUGHPUT | 1 秒間で取得されたレコード数。 |
| EXECUTE_MS | Salesforce がクエリの準備および実行に要した時間 (ミリ秒) |
| TOTAL_MS | クエリの準備、実行、およびクエリ結果の取得に要した時間 (ミリ秒) |
ユーザがレポートを実行したときの動作に関する情報が含まれます。このイベント種別には、レポートのエクスポートイベント種別のすべての活動とその他の活動が含まれます。
| 項目名 | 説明 |
| REPORT_ID | 実行されたレポートの 15 文字の ID。 |
| ROW_COUNT | レポートイベントで処理された行数。行数が多く、かつ AVERAGE_ROW_SIZE も大きい場合は、ユーザが詐欺目的で情報をダウンロードしている可能性があります。たとえば、競合他社に転職する前にすべてのセールスリードをダウンロードする営業担当などがこれに該当します。 |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU時間にカウントされません。 |
| DB_CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。要求時にデータベースレイヤで実行されている活動量を示します。 |
| DB_BLOCKS | データベースで発生しているアクティビティ量を示します。この項目の値が高い場合、クエリにインデックスまたは検索条件を追加するとパフォーマンスが向上します。 |
| DB_TOTAL_TIME | データベース往復処理の時間 (ナノ秒単位)。JDBC ドライバー、データベースへのネットワーク、および DB_CPU_TIME で費やされた時間を含みます。この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。 |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。 |
合計実行時間、インタビューの数、エラーの数などの詳細を含む、実行されたフローに関する情報が含まれます。
| 項目名 | 説明 |
| FLOW_VERSION_ID | 実行されたフローバージョンの ID。 |
| FLOW_LOAD_TIME | フローのメタデータの読み込みにかかった時間 (ミリ秒単位)。 |
| TOTAL_EXECUTION_TIME | すべてのフローインタビューの開始と終了にかかった合計時間 (ミリ秒単位)。 |
Analytics パフォーマンスのトレンドを追跡するのに役立ちます。
| 項目名 | 説明 |
| RECORD_ID | Tableau CRM オブジェクトの Salesforce ID。 |
| TAB_ID | ユーザインターフェースの特定の [分析] タブの ID。 |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU時間にカウントされません。 |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。 |
| EPT | 体験ページ時間 (ミリ秒単位)。 |
Visualforce 要求に関する詳細が含まれます。要求はブラウザ (UI) から実行できます。
| 項目名 | 説明 |
| PAGE_NAME | 要求された Visualforce ページの名前。 |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU時間にカウントされません。 |
| DB_CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。要求時にデータベースレイヤで実行されている活動量を示します。 |
| DB_BLOCKS | データベースで発生している活動量を示します。この項目の値が高い場合、クエリにインデックスまたは検索条件を追加するとパフォーマンスが向上します。 |
| DB_TOTAL_TIME | データベース往復処理の時間 (ナノ秒単位)。JDBC ドライバー、データベースへのネットワーク、および DB_CPU_TIME で費やされた時間を含みます。この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。 |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。 |
Salesforce コンソールのパフォーマンスと使用に関する情報が含まれます。サイドバーコンポーネントで [コンソール] タブが開かれるたびに、コンソールイベントがログに記録されます。それ以外は、Salesforce Classic の場合と同様に、[コンソール] タブが開かれると、通常のレコードの詳細の表示イベントが記録されます。
| 項目名 | 説明 |
| COMPONENT_ID | コンポーネントの 15 文字の ID。 |
| CONSOLE_ID | コンソールの 15 文字の ID。 |
| RECORD_ID | コンソールに関連付けられたレコードの 15 文字の ID。 |
| CPU_TIME | 要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。この時間はすべて、CPU時間にカウントされません。 |
| DB_TOTAL_TIME | データベース往復処理の時間 (ナノ秒単位)。JDBC ドライバー、データベースへのネットワーク、および DB_CPU_TIME で費やされた時間を含みます。この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。 |
| RUN_TIME | 要求にかかった時間 (ミリ秒単位)。 |
学習ツール
- SOAP API開発ガイド:EventLogFile でサポートされているイベント種別
- ヘルプ : デバッグログの設定
- トレイルヘッド:Lightning Experience のパフォーマンスの最適化
- ヘルプ:技術要件とパフォーマンスのベストプラクティス
まとめ
パフォーマンス分析に関するログは、イベントモニタリングのログに記録され、対象のログと項目を確認することにより、パフォーマンス問題がどこで発生しているのか、またどこがボトルネックになっているのか確認することができます。この記事で学べること
イベントモニタリングに含まれる2種類のログを理解し、パファーマンス分析のために、確認したいケースごとにどのログのどの項目を参照することにより、ボトルネックやチューニングのポイントを確認することができるか理解できます。
公開日: 2022.03.30
この情報は役に立ちましたか?
ご意見お待ちしております。
フィードバックありがとうございます。
より役に立つために
役に立たなかった一番の理由を教えてください。