Cloud Profiler로 Dataflow 파이프라인 프로파일링

Cloud Profiler는 오버헤드가 낮은 통계 프로파일러로, 프로덕션 애플리케이션에서 CPU 사용량과 메모리 할당 정보를 지속적으로 수집합니다. Cloud Profiler와 통합된 Dataflow를 사용하면 가장 많은 리소스를 소비하는 파이프라인 코드 부분을 식별할 수 있습니다.

시작하기 전에

Cloud Profiler의 개념을 이해하고 프로파일러 인터페이스를 숙지합니다.

프로젝트의 Cloud Profiler API는 처음 Profiler 페이지를 방문할 때 자동으로 사용 설정됩니다. 프로젝트에 할당량이 충분한지 확인합니다.

Dataflow 파이프라인에 Cloud Profiler 사용 설정

Cloud Profiler는 자바 및 Python용 Apache Beam SDK 버전 2.33.0 이상으로 작성된 Dataflow 파이프라인에 사용할 수 있으며, 파이프라인 시작 시 사용 설정할 수 있습니다. 분할 상쇄된 CPU와 메모리 오버헤드는 파이프라인의 1% 미만일 것으로 예상됩니다.

자바

CPU 프로파일링을 사용 설정하려면 --dataflowServiceOptions=enable_google_cloud_profiler 옵션을 사용하여 파이프라인을 시작합니다.

힙 프로파일링을 사용 설정하려면 --dataflowServiceOptions=enable_google_cloud_profiler--dataflowServiceOptions=enable_google_cloud_heap_sampling 옵션을 사용하여 파이프라인을 시작합니다. 힙 프로파일링에는 자바 11 이상이 필요합니다.

Python

Cloud Profiler를 사용하려면 Python 파이프라인을 Dataflow Runner v2로 실행해야 합니다.

CPU 프로파일링을 사용 설정하려면 --dataflow_service_options=enable_google_cloud_profiler 옵션을 사용하여 파이프라인을 시작합니다. 힙 프로파일링은 아직 Python에서 지원되지 않습니다.

Dataflow 템플릿에서 파이프라인을 배포하는 경우 enable_google_cloud_profilerenable_google_cloud_heap_sampling 플래그를 추가 실험으로 지정하여 Cloud Profiler를 사용 설정할 수 있습니다.

콘솔

위에서 설명한 대로Google 제공 템플릿을 사용하는 경우 Dataflow의 템플릿에서 작업 만들기 페이지에서 추가 실험 필드에 플래그를 지정할 수 있습니다.

gcloud

gcloud 명령줄 도구를 사용하여 gcloud dataflow jobs run 또는 gcloud dataflow flex-template run 템플릿을 실행하는 경우 템플릿 유형에 따라 --additional-experiments 옵션을 통해 플래그를 지정할 수 있습니다.

API

REST API를 사용하여 템플릿을 실행하는 경우 런타임 환경의 additionalExperiments 필드를 통해 템플릿 유형에 따라 RuntimeEnvironment 또는 FlexTemplateRuntimeEnvironment로 플래그를 지정할 수 있습니다.

프로파일링 데이터 보기

Cloud Profiler가 사용 설정되면 작업 페이지에 Profiler 페이지 링크가 표시됩니다.

프로파일러 페이지 링크

Profiler 페이지를 방문하여 Dataflow 파이프라인의 프로파일링 데이터를 찾을 수도 있습니다. 여기서 서비스는 작업 이름이고 버전은 작업 ID입니다.

프로파일러 페이지

문제 해결하기

Cloud Profiler를 사용 설정하더라도 파이프라인이 프로파일링 데이터를 생성하지 못할 수 있는 몇 가지 일반적인 원인이 있습니다.

  • 파이프라인에서 이전 Apache Beam SDK 버전을 사용합니다. 작업 페이지를 통해 파이프라인의 Apache Beam SDK 버전을 볼 수 있습니다. Cloud Profiler를 사용하려면 버전 2.33.0 이상이 필요합니다. Dataflow 템플릿에서 작업을 만든 경우 템플릿이 지원되는 SDK 버전을 사용하는지 확인합니다.

  • 프로젝트의 Cloud Profiler 할당량이 부족합니다. 프로젝트의 할당량 페이지에서 할당량 사용량을 볼 수 있습니다. 할당량에 도달하면 Cloud Profiler 서비스가 프로파일링 데이터를 거부합니다.

Cloud Profiler 에이전트는 Dataflow 작업자 시작 중에 설치됩니다. Cloud Profiler에서 생성한 로그 메시지는 dataflow.googleapis.com/worker-startup 로그 유형에서 확인할 수 있습니다.

프로파일러 로그