オンプレミス データ ゲートウェイのパフォーマンスの監視と最適化
ゲートウェイ パフォーマンスの監視 (パブリック プレビュー)
ゲートウェイ管理者は従来、パフォーマンスを監視するために 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 |
クエリ開始レポートには、クエリとクエリ開始時刻が含まれています。 次の属性がキャプチャされます。
属性 | 説明 |
---|---|
GatewayObjectId | ゲートウェイ用の一意の識別子です。 |
RequestId | ゲートウェイ要求の一意識別子です。 複数のクエリで同じになる場合があります。 |
DataSource | データ ソースの種類とデータ ソースの両方が含まれます。 |
QueryTrackingId | クエリの一意の識別子です。 ただし、クエリが失敗して再試行された場合は繰り返されることがあります。 |
QueryExecutionStartTimeUTC | クエリの実行が開始された時刻。 |
QueryType | クエリの種類。 たとえば、渡されたクエリは Power BI 更新または DirectQuery かもしれません。 または、Power Apps や Power Automate からのクエリかもしれません。 |
QueryText | base64 でエンコードされた完全なクエリ。 |
EvaluationContext | artifactId (セマンティック モデルの datasetid、dataflowsId など) と、成果物に応じた追加のトレース ID が含まれます。 このフィールドは、Fabric、Power Platform、Azure Analysis Services、および Azure Logic Apps の特定のコネクタでサポートされているワークロードに対してのみ設定されることに注意してください。 これらには、セマンティック モデル、データフロー Gen2、Power Platform データフローが含まれます。 Mashup クエリ、HTTP、および File Azure コネクタ用の Azure Logic Apps ワークロードも含まれます。 値には、使用されるワークロードに応じて異なるトレース ID が含まれます。 Power BI および Fabric データフロー Gen 1 と Power BI のページ分割されたレポートはサポートされません。 |
クエリ実行集計レポートには、GatewayObjectId、DataSource。Success、および 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 | 集約時間ウィンドウのシステム カウンターの平均値。 |
ゲートウェイのパフォーマンスを視覚化する
これで、ログ ファイルにあるデータを視覚化できます。
Gateway Performance PBI テンプレートをダウンロードし、Power BI Desktop を使用して開きます。
開いたダイアログボックスで、フォルダー パスが ReportFilePath の値と一致していることを確認してください。
[読み込み] を選択すると、テンプレート ファイルによってログ ファイルからのデータの読み込みが開始されます。 すべてのビジュアルは、レポートのデータを使用して入力されます。
必要に応じて、このファイルを PBIX として保存し、自動更新用にサービスへ公開します。 詳細については、「Power BI Desktop からのセマンティック モデルとレポートの発行」を参照してください。
このテンプレート ファイルは、ニーズに合わせてカスタマイズすることもできます。 Power BI テンプレートの詳細については、この「Microsoft Power BI ブログ投稿」を参照してください。
スプール記憶域の監視
既定では、ゲートウェイのスプール記憶域は C:\Users\PBIEgwService\AppData\Local\Microsoft\On-premises data gateway\Spooler にあります。 この場所を監視して、十分な空きディスク容量があることを確認してください。 詳細: ゲートウェイ スプーリング データ
実行速度の遅いクエリ
実行時間の長いクエリでは、データ ソースをさらに変更するか、クエリ自体をさらに最適化する必要があります。 これは、Power BI の更新用、または Power BI DirectQuery、Power Apps、Azure Logic Apps などの直接データベース クエリ用のどちらかになります。
既定では、ゲートウェイで基本的なログ記録が実行されます。 実行速度の遅いクエリを調査する場合は、パフォーマンスの監視機能を使用することに加え、[追加のログ] を一時的に有効にし、マッシュアップ エンジンのログ、クエリ文字列、詳細レベルのトレースなど、追加のログ情報を収集できます。 これらのログは、通常のゲートウェイ ログと同じ場所に書き込まれます。 これを行うには、オンプレミス データ ゲートウェイ アプリで [診断]>[追加のログ] を選択します。
この設定を有効にすると、ゲートウェイの使用状況に応じてログサイズが大幅に増加します。 ログの確認が完了したら、追加のログ記録を無効にすることをお勧めします。 通常のゲートウェイの使用中にこの設定を有効のままにすることは推奨されません。
データをストリーミングしてパフォーマンスを最適化する
既定では、オンプレミスのデータ ゲートウェイは、データをセマンティック モデルに返す前にデータをスプールし、データのロードおよび更新操作中のパフォーマンスの低下を引き起こす可能性があります。 既定の動作はオーバーライドできます。
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>
オンプレミスのデータ ゲートウェイ >サービス設定では、ゲートウェイを再起動します。
Note
StreamBeforeRequestCompletes を有効にすると、低速のデータ ソースを使用する場合や、ネットワーク接続が不安定または制限されている場合に、クエリの信頼性の問題が発生する可能性があります。
ウイルス対策スキャンから特定のフォルダーを除外してパフォーマンスを最適化すると、
潜在的なパフォーマンスへの影響を回避するために、オンプレミス データ ゲートウェイがインストールされているサーバーでファイル レベルのウイルス対策ソフトウェアを使用する場合、特定のフォルダーをウイルス対策スキャンから除外できます。 これらのフォルダーが除外されていない場合は、これらのフォルダーは大量の書き込み操作を受け、オンプレミス データ ゲートウェイの中核となるデータ パイプラインであるため、パフォーマンスへの影響やその他の予期しない動作が発生する可能性があります。
オンプレミス データ ゲートウェイ サーバーで、ウイルス対策スキャンから除外する必要がある可能性があるフォルダー
Note
次のプレース ホルダーの Drive は、オンプレミス データ ゲートウェイがインストールされているドライブの文字を表します。 通常、ドライバー文字は C です。次のプレースホルダー ServiceAccount は、オンプレミス データ ゲートウェイを実行しているサービス アカウントを表します。 既定のアカウントは PBIEgwService です。
- ログ ディレクトリ: Drive:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\オンプレミス データ ゲートウェイ
- スプール ストレージ ディレクトリ: Drive:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\オンプレミス データ ゲートウェイ\Spooler