パフォーマンス分析のためのイベントログの参照ガイド

Shield

2022.03.30

Share:

この記事で学べること

イベントモニタリングに含まれる2種類のログを理解し、パファーマンス分析のために、確認したいケースごとにどのログのどの項目を参照することにより、ボトルネックやチューニングのポイントを確認することができるか理解できます。

イベントモニタリングに含まれる2種類のログの違い

イベントモニタリングライセンスには、以下2種類のログが含まれます。

  • リアルタイムイベントモニタリング:セキュリティインシデントの発生ログとレコードへのアクセスログ
  • イベントモニタリング:イベント発生 / エラー / パフォーマンス分析用のイベントログ

この2種類のログの違いの詳細については、以下の記事をご参照ください。

ここでは、パフォーマンス分析用のログとしてイベントモニタリングのログを対象に説明しています。

パフォーマンス監視の重要性

生産性向上を実現するために導入したせっかくのシステムもレスポンスが悪く利用にストレスがあると利用が促進されない場合があります。パフォーマンスはシステムを利用するにあたって重要な要因です。しかしパフォーマンスは様々な要因で劣化してしまいます。例えば、大量データの取り扱い、データベースのインデックス、冗長なロジックのコード、またお客様環境においてもネットワークやクライアントの環境によってもパフォーマンス劣化が発生します。そのため継続的なパフォーマンスの監視はシステムの導入を成功に導くために重要なポイントとなります。

イベントモニタリングによるログの取得

多くのイベントログに要求の完了にかかった CPU 時間 (CPU_TIME)が記録されます。また、APEX実行に関するログにはデータベースのパフォーマンスに係る数値(DB_TOTAL_TIME)が記録されます。

パフォーマンスの問題が発生した際は、イベントログから要求の完了に係ったCPU時間とデータベースの処理にかかった時間を比較することで、パフォーマンス上の問題が独自のコードの部分にあるかデータベースレイヤのどちらにあるか、またはクライアント環境に起因するものか判断することが出来ます。

また、大まかに処理に時間がかかった部分を判断した上で、デバッグログの設定をしていただく事でより具体的にどの処理に時間を要したか、効率よく確認をしていく事が可能となります。

ヘルプ : デバッグログの設定

取得するべきイベントログファイル

以下にパフォーマンスに関する調査において参考となるイベントログファイルおよびその項目について例示をします(表中黄色いハイライト部分は、ログ対象のイベントを特定する項目です)。各イベントログファイルの内容については以下をご参照ください。

SOAP API開発ガイド:EventLogFile でサポートされているイベント種別

Lightning Experience および Salesforce モバイルアプリケーションでイベントが発生したページに関する情報を表します。Lightning ページビューイベントは、ユーザがアクセスしたページ、そのページにユーザが滞在した時間、ページの読み込み時間を追跡します。



項目名


説明


PAGE_URL
ユーザが開いた最上位の Lightning Experience ページまたは Salesforce モバイルアプリケーションページの相対 URL。
ページには、1 つ以上の Lightning コンポーネントを含めることができます。
複数のレコード ID を PAGE_URL に関連付けることができます。


EFFECTIVE_PAGE_TIME     
ページを読み込んでからユーザがページの機能を操作できるようになるまでにかかった時間 (ミリ秒) を示します。
実効ページ時間は、複数の要素 (ネットワーク速度、ハードウェアパフォーマンス、ページの複雑さなど) の影響を受けます。
60 秒を超える有効なページ時間が検出された場合、この項目の値は null に設定されます。

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 要求に関する情報を取得します。

A
B
1
項目名


説明

2URI
要求を受信しているページの URI。
3ROWS_PROCESSED      
要求で処理された行数。
4CPU_TIME
要求の完了にかかった CPU 時間 (ミリ秒単位)。この項目は、アプリケーションサーバレイヤで実行されているアクティビティ量を示します。
DMLの実行中には、レコードロックや処理中のレコードのロック解除待ち、apexコードのコンパイルなど、(開発者が制御できない)他の動作が行われます。
この時間はすべて、CPU使用率にカウントされません。

5DB_CPU_TIME
要求の完了にかかった CPU 時間 (ミリ秒単位)。要求時にデータベースレイヤで実行されているアクティビティ量を示します。
6DB_BLOCKS
データベースで発生しているアクティビティ量を示します。この項目の値が高い場合、クエリにインデックスまたは検索条件を追加するとパフォーマンスが向上します。
7DB_TOTAL_TIME
データベース往復処理の時間 (ナノ秒単位)。JDBC ドライバー、データベースへのネットワーク、および DB_CPU_TIME で費やされた時間を含みます。
この項目を CPU_TIME と比較して、パフォーマンス上の問題がデータベースレイヤと独自のコードのどちらで発生しているかを判断します。

8RUN_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
要求にかかった時間 (ミリ秒単位)。

学習ツール

まとめ

パフォーマンス分析に関するログは、イベントモニタリングのログに記録され、対象のログと項目を確認することにより、パフォーマンス問題がどこで発生しているのか、またどこがボトルネックになっているのか確認することができます。

Shield

2022.03.30

Share:

前の記事「Salesforce利用分析のためのイベントログの参照ガイド」

次の記事「脅威検知の利用開始」

このカテゴリの人気記事

Salesforceについてもっと学ぶ

Salesforce活用に役立つメルマガ登録

システム管理者のみなさまにおすすめの活用ウェブセミナーや、Salesforceでビジネスを推進いただくために有益なコンテンツを毎月お届けします。

Follow us!

Twitter公式アカウント

Salesforce活用に役立つメルマガ登録(毎月配信)

  • 私は、個人情報保護基本方針プライバシーに関する声明個人情報利用についての通知に同意します。 特に、プライバシーに関する声明で定めるとおり、情報のホスティングと処理を目的として私の個人データをアメリカ合衆国を含む国外に転送することを許可します。詳細私は、海外では日本の法律と同等のデータ保護法が整備されていない可能性があることも理解しています。詳細はこちらでご確認ください

  • 私は、Salesforce の製品、サービス、イベントに関するマーケティング情報の受け取りを希望します。私は、当該マーケティング情報の受け取りを私がいつでも停止できることを理解しています。