온-프레미스 데이터 게이트웨이 성능 모니터링 및 최적화
게이트웨이 성능 모니터링(공개 미리 보기)
성능을 모니터링하기 위해 게이트웨이 관리자는 전통적으로 Windows 성능 모니터 도구를 통해 수동으로 성능 카운터를 모니터링했습니다. 이제는 추가 쿼리 로깅과 게이트웨이 성능 PBI 템플릿 파일을 사용하여 결과를 시각화할 수 있습니다. 이 기능은 게이트웨이 사용에 대한 새로운 통찰력을 제공합니다. 이를 사용하여 성능이 느린 쿼리 문제를 해결할 수 있습니다.
참고 항목
이 기능은 현재 표준 모드의 온-프레미스 데이터 게이트웨이에 대해서만 사용할 수 있습니다. 개인 모드에서는 사용할 수 없습니다.
참고 항목
게이트웨이 진단은 대역폭 또는 대기 시간과 같이 (가상) 시스템 및 해당 네트워크와 직접 관련된 진단을 캡처하지 않습니다. 그러나 이러한 진단은 게이트웨이 성능에 영향을 미칠 수 있습니다. 리소스 모니터링 도구를 사용하여 시스템을 모니터링할 수 있습니다.
성능 로깅
이 기능은 현재 기본적으로 켜져 있습니다.
참고 항목
- 현재 프리미엄 용량에서 게이트웨이로의 쿼리가 이 로깅에서 누락되는 경우가 있습니다. 이 문제에 대한 해결책을 찾기 위해 적극적으로 노력하고 있습니다.
- 현재 페이지를 매긴 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 dateway\Report 중 하나입니다. 경로는 OS 버전에 따라 다릅니다. PBIEgwService 이외의 게이트웨이에 대해 서비스 계정을 사용하는 경우 경로의 이 부분을 서비스 계정 이름으로 바꿉니다.
- ReportFileCount: 보유할 각 종류의 로그 파일 수를 결정합니다. 기본값은 10입니다.
- ReportFileSizeInBytes: 유지할 파일의 크기를 결정합니다. 기본값은 104,857,600입니다.
- QueryExecutionAggregationTimeInMinutes: 쿼리 실행 정보가 집계되는 시간(분)을 결정합니다. 기본 값은 5입니다.
- SystemCounterAggregationTimeInMinutes: 시스템 카운터가 집계되는 시간(분)을 결정합니다. 기본 값은 5입니다.
구성 파일을 변경 한 후 이 구성 값을 적용하려면 게이트웨이를 다시 시작합니다. 보고서 파일은 이제 ReportFilePath에 대해 지정한 위치에 생성됩니다.
참고 항목
폴더에서 파일이 표시되기 시작할 때까지 구성 파일에서 QueryExecutionAggregationTimeInMinutes에 대해 설정된 시간에 최대 10분이 추가될 수 있습니다.
성능 로그 이해
이 기능을 켜면 4개의 새 로그 파일이 만들어집니다.
- 쿼리 실행 보고서
- 쿼리 시작 보고서
- 쿼리 실행 집계 보고서
- 시스템 카운터 집계 보고서
쿼리 실행 보고서에는 자세한 쿼리 실행 정보가 포함되어 있습니다. 다음과 같은 특성이 캡처됩니다.
attribute | 설명 |
---|---|
GatewayObjectId | 게이트웨이의 고유 식별자입니다. |
RequestId | 게이트웨이 요청의 고유 식별자입니다. 여러 쿼리에서 동일할 수 있습니다. |
DataSource | 데이터 원본 유형과 데이터 원본을 모두 포함합니다. |
QueryTrackingId | 쿼리의 고유 식별자입니다. 그러나 쿼리가 실패하고 재시도되면 반복될 수 있습니다. |
QueryExecutionEndTimeUTC | 쿼리 실행이 완료된 시간입니다. |
QueryExecutionDuration(밀리초) | 쿼리 실행 기간입니다. |
QueryType | 쿼리 형식 예를 들어, 전달된 쿼리는 Power BI 새로 고침 또는 DirectQuery일 수 있습니다. 또는 Power Apps 및 Power Automate의 쿼리일 수 있습니다. |
DataProcessingEndTimeUTC | 스풀링, 데이터 검색, 압축 및 데이터 처리와 같은 데이터 처리 활동이 완료된 시간입니다. |
DataProcessingDuration(밀리초) | 스풀링, 데이터 검색, 압축 및 데이터 처리와 같은 데이터 처리 활동을 위한 기간입니다. |
성공 | 쿼리의 성공 또는 실패 여부를 나타냅니다. |
ErrorMessage | 쿼리가 실패하면 오류 메시지를 나타냅니다. |
SpoolingDiskWritingDuration(밀리초) | 게이트웨이가 모든 데이터를 디스크에 쓰는 시간을 나타냅니다. |
SpoolingDiskReadingDuration(밀리초) | 게이트웨이가 모든 데이터를 디스크에서 읽은 시간을 나타냅니다. |
SpoolingTotalDataSize (bytes) | 디스크에 쓰거나 디스크에서 읽은 데이터의 크기(압축) |
DataReadingAndSerializationDuration(밀리초) | 게이트웨이가 데이터 원본에서 데이터를 읽고 패킷으로 직렬화하는 데 걸리는 시간을 나타냅니다. |
DiskRead (byte/sec) | 게이트웨이가 초당 읽은 바이트 수를 나타냅니다. DiskRead(byte/sec) = SpoolingTotalDataSize / SpoolingDiskReadingDuration |
DiskWrite (byte/sec) | 게이트웨이가 초당 쓴 바이트 수를 나타냅니다. DiskWrite(byte/sec) = SpoolingTotalDataSize / SpoolingDiskWritingDuration |
쿼리 시작 보고서에는 쿼리와 쿼리 시작 시간이 포함됩니다. 다음과 같은 특성이 캡처됩니다.
attribute | 설명 |
---|---|
GatewayObjectId | 게이트웨이의 고유 식별자입니다. |
RequestId | 게이트웨이 요청의 고유 식별자입니다. 여러 쿼리에서 동일할 수 있습니다. |
DataSource | 데이터 원본 유형과 데이터 원본을 모두 포함합니다. |
QueryTrackingId | 쿼리의 고유 식별자입니다. 그러나 쿼리가 실패하고 재시도되면 반복될 수 있습니다. |
QueryExecutionStartTimeUTC | 쿼리 실행이 시작된 시간입니다. |
QueryType | 쿼리 형식 예를 들어, 전달된 쿼리는 Power BI 새로 고침 또는 DirectQuery일 수 있습니다. 또는 Power Apps 및 Power Automate의 쿼리일 수 있습니다. |
QueryText | Base64로 인코딩된 완전한 쿼리입니다. |
EvaluationContext | 아티팩트 Id에 따라 추가 추적 ID와 함께 artifactId(즉, 의미 체계 모델, dataflowsId 등에 대한 데이터 세트)를 포함합니다. 이 필드는 Fabric, Power Platform, Azure Analysis Services 및 Azure Logic Apps의 특정 커넥터에서 지원되는 워크로드에 대해서만 채워집니다. 여기에는 의미 체계 모델, 데이터 흐름 Gen2 및 Power Platform 데이터 흐름이 포함됩니다. 또한 매시업 쿼리, HTTP 및 파일 Azure 커넥터에 대한 Azure Logic Apps 워크로드도 포함됩니다. 값에는 사용된 워크로드에 따라 다른 추적 ID가 포함됩니다. Power BI 및 패브릭 데이터 흐름 Gen 1 및 Power BI 페이지를 매긴 보고서는 지원되지 않습니다. |
쿼리 실행 집계 보고서에는 GatewayObjectId, DataSource, Sucess, QueryType별로 시간 간격으로 집계된 쿼리 정보가 포함되어 있습니다. 기본값은 5분이지만 조정할 수 있습니다. 다음과 같은 특성이 캡처됩니다.
attribute | 설명 |
---|---|
GatewayObjectId | 게이트웨이의 고유 식별자입니다. |
AggregationStartTimeUTC | 쿼리 속성이 집계된 시간대 시작입니다. |
AggregationEndTimeUTC | 쿼리 속성이 집계된 시간대 종료입니다. |
DataSource | 데이터 원본 유형과 데이터 원본을 모두 포함합니다. |
성공 | 쿼리의 성공 또는 실패 여부를 나타냅니다. |
AverageQueryExecutionDuration(밀리초) | 집계 시간대에 대한 평균 쿼리 실행 시간입니다. |
MaxQueryExecutionDuration(밀리초) | 집계 시간대에 대한 최대 쿼리 실행 시간입니다. |
MinQueryExecutionDuration(밀리초) | 집계 시간대에 대한 최소 쿼리 실행 시간입니다. |
QueryType | 쿼리 형식 예를 들어, 전달된 쿼리는 Power BI 새로 고침 또는 DirectQuery일 수 있습니다. 또는 Power Apps 및 Power Automate의 쿼리일 수 있습니다. |
AverageDataProcessingDuration(밀리초) | 집계 시간대에 대한 스풀링, 데이터 검색, 압축 및 데이터 처리와 같은 데이터 처리 활동을 위한 평균 시간입니다. |
MaxDataProcessingDuration(밀리초) | 집계 시간대에 대한 스풀링, 데이터 검색, 압축 및 데이터 처리와 같은 데이터 처리 활동을 위한 최대 시간입니다. |
MinDataProcessingDuration(밀리초) | 집계 시간대에 대한 스풀링, 데이터 검색, 압축 및 데이터 처리와 같은 데이터 처리 활동을 위한 최소 시간입니다. |
Count | 쿼리 수 |
시스템 카운터 집계 보고서에는 시간 간격으로 집계된 시스템 카운터 값이 포함됩니다. 기본값은 5분이지만 조정할 수 있습니다. 다음과 같은 특성이 캡처됩니다.
attribute | 설명 |
---|---|
GatewayObjectId | 게이트웨이의 고유 식별자입니다. |
AggregationStartTimeUTC | 집계된 시스템 카운터의 시간대 시작입니다. |
AggregationEndTimeUTC | 집계된 시스템 카운터의 시간대 종료입니다. |
CounterName | 시스템 카운터는 각각 게이트웨이 노드를 호스팅하는 하나의 서버에 적용되며 다음을 포함합니다. • SystemCPUPercent: 서버에서 사용 가능한 총 CPU의 백분율로 사용되는 CPU입니다. • SystemMEMUsedPercent: 서버에서 사용 가능한 총 메모리의 백분율로 사용되는 메모리입니다. • GatewayCPUPercent: 각 코어의 게이트웨이 프로세스에서 사용하는 CPU 비율의 합계입니다. 서버에서 사용되는 CPU의 백분율을 얻으려면 GatewayCPUPercent를 코어 수로 나눕니다. • GatewayMEMKb: 게이트웨이 프로세스에서 사용하는 총 메모리의 합계(킬로바이트)입니다. |
Max | 집계 시간대에 대한 시스템 카운터의 최댓값입니다. |
Min | 집계 시간대에 대한 시스템 카운터의 최솟값입니다. |
평균 | 집계 시간대에 대한 시스템 카운터의 평균값입니다. |
게이트웨이 성능 시각화
이제 로그 파일에 있는 데이터를 시각화할 수 있습니다.
게이트웨이 성능 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>
온-프레미스 데이터 게이트웨이>서비스 설정에서 게이트웨이를 다시 시작합니다.
참고 항목
StreamBeforeRequestCompletes를 사용하도록 설정하면 느린 데이터 원본을 사용하거나 네트워크 연결이 불안정하거나 제한된 경우 쿼리 안정성 문제가 발생할 수 있습니다.
바이러스 백신 검사에서 특정 폴더를 제외하여 성능을 최적화합니다.
잠재적인 성능 영향을 방지하기 위해 온-프레미스 데이터 게이트웨이가 설치된 서버에서 파일 수준 바이러스 백신 소프트웨어를 사용할 때 특정 폴더를 바이러스 백신 검사에서 제외할 수 있습니다. 이러한 폴더가 제외되지 않는 경우 이러한 폴더는 많은 양의 쓰기 작업을 수신하고 온-프레미스 데이터 게이트웨이의 핵심 데이터 파이프라인이므로 성능 영향 및 잠재적으로 다른 예기치 않은 동작을 관찰할 수 있습니다.
온-프레미스 데이터 게이트웨이 서버의 바이러스 백신 검사에서 제외해야 할 수 있는 폴더
참고 항목
다음 자리 표시자 드라이브는 온-프레미스 데이터 게이트웨이가 설치된 드라이브의 문자를 나타냅니다. 일반적으로 드라이버 문자는 C입니다. 다음 자리 표시자 ServiceAccount는 온-프레미스 데이터 게이트웨이를 실행하는 서비스 계정을 나타냅니다. 기본 계정은 PBIEgwService입니다.
- 로깅 디렉터리: 드라이브:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\온-프레미스 데이터 게이트웨이
- 스풀 스토리지 디렉터리: 드라이브:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\온-프레미스 데이터 게이트웨이\Spooler