オンプレミス データ ゲートウェイのパフォーマンスの監視と最適化

ゲートウェイ パフォーマンスの監視 (パブリック プレビュー)

ゲートウェイ管理者は従来、パフォーマンスを監視するために Windows パフォーマンス モニター ツールを使用して手動でパフォーマンス カウンターを監視していました。 結果を視覚化するために、追加のクエリ ログと Gateway Performance PBI テンプレート ファイルを提供するようになりました。 この機能では、ゲートウェイの使用状況に関する新しいインサイトを提供します。 これを使用して、実行速度の遅いクエリのトラブルシューティングを行うことができます。

Note

この機能は現在、標準モードのオンプレミス データ ゲートウェイでのみ使用できます。 個人用モードではご利用いただけません。

Note

ゲートウェイ診断では、帯域幅や待ち時間など、(仮想) マシンとそのネットワークに直接関連する診断はキャプチャされません。 ただし、これらの診断はゲートウェイのパフォーマンスに影響を与える可能性があります。 リソース監視ツールを使用して、マシンを監視できます。

パフォーマンス ログ

この機能は現在既定で有効になっています。

Note

  • 現在のところ、Premium 容量からゲートウェイへのクエリは、このログで見落とされることがあります。 この問題の修正に取り組み中です。
  • 現在のところ、Power BI 改ページ対応レポート クエリは、このツールを使用してログに記録されません。

パフォーマンス ログを構成する

構成ファイル C:\Program Files\On-premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config には、必要に応じて更新できる他の値があります。

  • ReportFilePath: 4 つのログ ファイルが保存されるパスを決定します。 既定では、このパスは \Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Report または \Windows\ServiceProfiles\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Report のいずれかです。 パスは OS のバージョンによって異なります。 PBIEgwService 以外のゲートウェイのサービス アカウントを使用する場合は、パスのこの部分をサービス アカウント名に置き換えます。
  • ReportFileCount: 保持する各種類のログ ファイルの数を決定します。 既定値は 10 です。
  • ReportFileSizeInBytes: 維持するファイル サイズを決定します。 既定値は 104,857,600 です。
  • QueryExecutionAggregationTimeInMinutes: クエリ実行情報が集約される分数を決定します。 既定値は 5 です。
  • SystemCounterAggregationTimeInMinutes: システム カウンターが集計される分数を決定します。 既定値は 5 です。

構成ファイルに変更を加えたら、ゲートウェイを再起動してこれらの構成値を有効にします。 レポート ファイルは、ReportFilePath に指定した場所に生成されます。

Note

フォルダーにファイルが表示されるようになるまで、構成ファイルの QueryExecutionAggregationTimeInMinutes で設定した時間に加えて、最大で 10 分かかる場合があります。

パフォーマンス ログについて

この機能をオンにすると、4 つの新しいログファイルが作成されます。

  • クエリ実行レポート
  • クエリ開始レポート
  • クエリ実行集計レポート
  • システム カウンター集計レポート

クエリ実行レポートには、詳細なクエリ実行情報が含まれています。 次の属性がキャプチャされます。

属性 説明
GatewayObjectId ゲートウェイ用の一意の識別子です。
RequestId ゲートウェイ要求の一意識別子です。 複数のクエリで同じになる場合があります。
DataSource データ ソースの種類とデータ ソースの両方が含まれます。
QueryTrackingId クエリの一意の識別子です。 ただし、クエリが失敗して再試行された場合は繰り返されることがあります。
QueryExecutionEndTimeUTC クエリの実行が完了した時刻。
QueryExecutionDuration (ミリ秒) クエリ実行時間。
QueryType クエリの種類。 たとえば、渡されたクエリは Power BI 更新または DirectQuery かもしれません。 または、Power Apps や Power Automate からのクエリかもしれません。
DataProcessingEndTimeUTC スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティが完了した時刻。
DataProcessingDuration (ミリ秒) スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティ時間。
成功 クエリの成功または失敗を示します。
ErrorMessage クエリが失敗した場合は、エラー メッセージを示します。
SpoolingDiskWritingDuration (ミリ秒) ゲートウェイですべてのデータをディスクに書き込む時間を示します。
SpoolingDiskReadingDuration (ミリ秒) ゲートウェイですべてのデータをディスクに書き込む時間を示します。
SpoolingTotalDataSize (バイト) ディスクへの書き込み/読み取りができるデータのサイズ (圧縮)。
DataReadingAndSerializationDuration (ミリ秒) ゲートウェイでデータソースからデータを読み取り、パケットにシリアル化するのにかかる時間を示します。
DiskRead (バイト/秒) ゲートウェイで 1 秒あたりに読み取るバイト数を示します。 DiskRead(バイト/秒) = SpoolingTotalDataSize / SpoolingDiskReadingDuration
DiskWrite (バイト/秒) ゲートウェイで 1 秒あたりに書き取るバイト数を示します。 DiskWrite(バイト/秒) = SpoolingTotalDataSize / SpoolingDiskWritingDuration

クエリ開始レポートには、クエリとクエリ開始時刻が含まれています。 次の属性がキャプチャされます。

Note

EvaluationContext は、Power BI データフローに対して追加のログ記録を有効にせず、Pro ライセンスのユーザーに対してのみ Dataflow Gen2 を表示します。 Premium ライセンスのユーザーの Power BI データフローの EvaluationContext を表示するには、追加のログ記録を有効にする必要があります。

属性 説明
GatewayObjectId ゲートウェイ用の一意の識別子です。
RequestId ゲートウェイ要求の一意識別子です。 複数のクエリで同じになる場合があります。
DataSource データ ソースの種類とデータ ソースの両方が含まれます。
QueryTrackingId クエリの一意の識別子です。 ただし、クエリが失敗して再試行された場合は繰り返されることがあります。
QueryExecutionStartTimeUTC クエリの実行が開始された時刻。
QueryType クエリの種類。 たとえば、渡されたクエリは Power BI 更新または DirectQuery かもしれません。 または、Power Apps や Power Automate からのクエリかもしれません。
QueryText base64 でエンコードされた完全なクエリ。
EvaluationContext artifactId (つまり、ModelID、DataflowsId) と、成果物に応じた追加データが含まれます。 このフィールドは、Dataflow Gen2 と Power Platform のデータフローに対してのみ設定されることに注意してください。

クエリ実行集計レポートには、GatewayObjectIdDataSourceSuccess、および QueryType で時間間隔に集計されたクエリ情報が含まれています。 既定値は 5 分となっていますが、変更可能です。 次の属性がキャプチャされます。

属性 説明
GatewayObjectId ゲートウェイ用の一意の識別子です。
AggregationStartTimeUTC クエリ属性が集計された時間枠の開始時間。
AggregationEndTimeUTC クエリ属性が集計された時間枠の終了時間。
DataSource データ ソースの種類とデータ ソースの両方が含まれます。
成功 クエリの成功または失敗を示します。
AverageQueryExecutionDuration (ミリ秒) 集約時間ウィンドウのためのクエリ実行の平均時間。
MaxQueryExecutionDuration (ミリ秒) 集約時間ウィンドウのためのクエリ実行の最大時間。
MinQueryExecutionDuration (ミリ秒) 集約時間ウィンドウのためのクエリ実行の最小時間。
QueryType クエリの種類。 たとえば、渡されたクエリは Power BI 更新または DirectQuery かもしれません。 または、Power Apps や Power Automate からのクエリかもしれません。
AverageDataProcessingDuration (ミリ秒) スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティの平均時間。
MaxDataProcessingDuration (ミリ秒) スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティの最大時間。
MinDataProcessingDuration (ミリ秒) スプーリング、データ取得、圧縮、データ処理などのデータ処理アクティビティの最小時間。
Count クエリの数

システム カウンター集計レポートには、時間間隔に集計されたシステム カウンター値が含まれます。 既定値は 5 分となっていますが、変更可能です。 次の属性がキャプチャされます。

属性 説明
GatewayObjectId ゲートウェイ用の一意の識別子です。
AggregationStartTimeUTC 集計されたシステム カウンターの時間枠の開始時間。
AggregationEndTimeUTC 集計されたシステム カウンター時間枠の終了時間。
CounterName システム カウンターはそれぞれ、ゲートウェイ ノードをホストしている 1 台のサーバーに適用され、次のものが含まれます。
SystemCPUPercent: サーバーで使用されている CPUのうち、使用可能な CPU の合計に対する割合。
SystemMEMUsedPercent: サーバーで使用されているメモリのうち、使用可能なメモリの合計に対する割合。
GatewayCPUPercent: 各コアのゲートウェイ プロセスによって使用される CPU の割合の合計。 サーバーで使用されている CPU の割合を取得するには、GatewayCPUPercent をコア数で除算します。
GatewayMEMKb: ゲートウェイ プロセスで使用されているメモリの合計 (キロバイト単位)。
Max (最大値) 集約時間ウィンドウのシステム カウンターの最大値。
Min 集約時間ウィンドウのシステム カウンターの最小値。
Average 集約時間ウィンドウのシステム カウンターの平均値。

ゲートウェイのパフォーマンスを視覚化する

これで、ログ ファイルにあるデータを視覚化できます。

  1. Gateway Performance PBI テンプレートをダウンロードし、Power BI Desktop を使用して開きます。

  2. 開いたダイアログボックスで、フォルダー パスが ReportFilePath の値と一致していることを確認してください。

    Pop-up for the folder path.

  3. [読み込み] を選択すると、テンプレート ファイルによってログ ファイルからのデータの読み込みが開始されます。 すべてのビジュアルは、レポートのデータを使用して入力されます。

  4. 必要に応じて、このファイルを PBIX として保存し、自動更新用にサービスへ公開します。 詳細については、「Power BI Desktop からのセマンティック モデルとレポートの発行」を参照してください。

このテンプレート ファイルは、ニーズに合わせてカスタマイズすることもできます。 Power BI テンプレートの詳細については、この「Microsoft Power BI ブログ投稿」を参照してください。

スプール記憶域の監視

既定では、ゲートウェイのスプール記憶域は C:\Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Spooler にあります。 この場所を監視して、十分な空きディスク容量があることを確認してください。 詳細: ゲートウェイ スプーリング データ

ゲートウェイ メンバーの同時実行性の監視

既定では、ゲートウェイ ノードで同時に実行できるクエリの数の制限は 40 です。 多くの場合、この制限に達すると、受信したクエリがキューに入れられ、長時間実行が保留され、パフォーマンスの低下やタイムアウトの種類のエラーが発生します。 ゲートウェイ メンバーがこの制限に達していると思われる場合は、追加のログ記録を有効にし、ゲートウェイ ログをエクスポートし、Mashup*.log ファイルを確認し、"runningCount" キーワードと "pendingCount" キーワードを探して、"runningCount" が 40 に近いことが多いかどうか、または "pendingCount" が 0 を超えることが多いかどうかを確認してください。 ゲートウェイを計画およびスケーリングする方法の詳細については、このドキュメントを参照してください。

実行速度の遅いクエリ

実行時間の長いクエリでは、データ ソースをさらに変更するか、クエリ自体をさらに最適化する必要があります。 これは、Power BI の更新用、または Power BI DirectQuery、Power Apps、Azure Logic Apps などの直接データベース クエリ用のどちらかになります。

既定では、ゲートウェイで基本的なログ記録が実行されます。 実行速度の遅いクエリを調査する場合は、パフォーマンスの監視機能を使用することに加え、[追加のログ] を一時的に有効にし、マッシュアップ エンジンのログ、クエリ文字列、詳細レベルのトレースなど、追加のログ情報を収集できます。 これらのログは、通常のゲートウェイ ログと同じ場所に書き込まれます。 これを行うには、オンプレミス データ ゲートウェイ アプリ[診断]>[追加のログ] を選択します。

Turn on additional logging.

この設定を有効にすると、ゲートウェイの使用状況に応じてログサイズが大幅に増加します。 ログの確認が完了したら、追加のログ記録を無効にすることをお勧めします。 通常のゲートウェイの使用中にこの設定を有効のままにすることは推奨されません。

データをストリーミングしてパフォーマンスを最適化する

既定では、オンプレミスのデータ ゲートウェイは、データをセマンティック モデルに返す前にデータをスプールし、データのロードおよび更新操作中のパフォーマンスの低下を引き起こす可能性があります。 既定の動作はオーバーライドできます。

  1. C:\Program Files\On-Premises data gateway\Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config ファイルで、StreamBeforeRequestCompletes 設定を True に設定し、保存します。

    <setting name="StreamBeforeRequestCompletes" serializeAs="String">
       <value>True</value>
    </setting>
    
  2. オンプレミスのデータ ゲートウェイ >サービス設定では、ゲートウェイを再起動します。

ウイルス対策スキャンから特定のフォルダーを除外してパフォーマンスを最適化すると、

潜在的なパフォーマンスへの影響を回避するために、オンプレミス データ ゲートウェイがインストールされているサーバーでファイル レベルのウイルス対策ソフトウェアを使用する場合、特定のフォルダーをウイルス対策スキャンから除外できます。 これらのフォルダーが除外されていない場合は、これらのフォルダーは大量の書き込み操作を受け、オンプレミス データ ゲートウェイの中核となるデータ パイプラインであるため、パフォーマンスへの影響やその他の予期しない動作が発生する可能性があります。

オンプレミス データ ゲートウェイ サーバーで、ウイルス対策スキャンから除外する必要がある可能性があるフォルダー

Note

次のプレース ホルダーの Drive は、オンプレミス データ ゲートウェイがインストールされているドライブの文字を表します。 通常、ドライバー文字は C です。次のプレースホルダー ServiceAccount は、オンプレミス データ ゲートウェイを実行しているサービス アカウントを表します。 既定のアカウントは PBIEgwService です。

  • ログ ディレクトリ: Drive:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\オンプレミス データ ゲートウェイ
  • スプール ストレージ ディレクトリ: Drive:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\オンプレミス データ ゲートウェイ\Spooler

次のステップ