온-프레미스 데이터 게이트웨이 성능 모니터링 및 최적화

게이트웨이 성능 모니터링(공개 미리 보기)

성능을 모니터링하기 위해 게이트웨이 관리자는 전통적으로 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

쿼리 시작 보고서에는 쿼리와 쿼리 시작 시간이 포함됩니다. 다음과 같은 특성이 캡처됩니다.

참고 항목

EvaluationContext는 Pro 라이선스 사용자에 대해서만 Power BI 데이터 흐름 및 Dataflow Gen2에 대해 추가 로깅을 사용하도록 설정하지 않고 표시됩니다. 프리미엄 라이선스 사용자에 대한 Power BI 데이터 흐름에 대한 EvaluationContext를 보려면 추가 로깅을 사용하도록 설정해야 합니다.

attribute 설명
GatewayObjectId 게이트웨이의 고유 식별자입니다.
RequestId 게이트웨이 요청의 고유 식별자입니다. 여러 쿼리에서 동일할 수 있습니다.
DataSource 데이터 원본 유형과 데이터 원본을 모두 포함합니다.
QueryTrackingId 쿼리의 고유 식별자입니다. 그러나 쿼리가 실패하고 재시도되면 반복될 수 있습니다.
QueryExecutionStartTimeUTC 쿼리 실행이 시작된 시간입니다.
QueryType 쿼리 형식 예를 들어, 전달된 쿼리는 Power BI 새로 고침 또는 DirectQuery일 수 있습니다. 또는 Power Apps 및 Power Automate의 쿼리일 수 있습니다.
QueryText Base64로 인코딩된 완전한 쿼리입니다.
EvaluationContext 아티팩트 Id(즉, ModelID, DataflowsId)와 아티팩트에 따라 추가 데이터를 포함합니다. 이 필드는 Dataflow Gen2 및 Power Platform 데이터 흐름에 대해서만 채워집니다.

쿼리 실행 집계 보고서에는 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 집계 시간대에 대한 시스템 카운터의 최솟값입니다.
평균 집계 시간대에 대한 시스템 카운터의 평균값입니다.

게이트웨이 성능 시각화

이제 로그 파일에 있는 데이터를 시각화할 수 있습니다.

  1. 게이트웨이 성능 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" 키워드(keyword) 찾고, "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. 온-프레미스 데이터 게이트웨이>서비스 설정에서 게이트웨이를 다시 시작합니다.

바이러스 백신 검사에서 특정 폴더를 제외하여 성능을 최적화합니다.

잠재적인 성능 영향을 방지하기 위해 온-프레미스 데이터 게이트웨이가 설치된 서버에서 파일 수준 바이러스 백신 소프트웨어를 사용할 때 특정 폴더를 바이러스 백신 검사에서 제외할 수 있습니다. 이러한 폴더가 제외되지 않는 경우 이러한 폴더는 많은 양의 쓰기 작업을 수신하고 온-프레미스 데이터 게이트웨이의 핵심 데이터 파이프라인이므로 성능 영향 및 잠재적으로 다른 예기치 않은 동작을 관찰할 수 있습니다.

온-프레미스 데이터 게이트웨이 서버의 바이러스 백신 검사에서 제외해야 할 수 있는 폴더

참고 항목

다음 자리 표시자 드라이브는 온-프레미스 데이터 게이트웨이가 설치된 드라이브의 문자를 나타냅니다. 일반적으로 드라이버 문자는 C입니다. 다음 자리 표시자 ServiceAccount는 온-프레미스 데이터 게이트웨이를 실행하는 서비스 계정을 나타냅니다. 기본 계정은 PBIEgwService입니다.

  • 로깅 디렉터리: 드라이브:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\온-프레미스 데이터 게이트웨이
  • 스풀 스토리지 디렉터리: 드라이브:\Windows\ServiceProfiles\ ServiceAccount \AppData\Local\Microsoft\온-프레미스 데이터 게이트웨이\Spooler

다음 단계