Azure Portal의 실제 작업 다이어그램(미리 보기)을 사용하여 디버그
Azure Portal의 실제 작업 다이어그램은 CPU 사용률, 메모리 사용률, 입력 이벤트, 파티션 ID 및 워터마크 지연과 같은 다이어그램 또는 테이블 형식의 스트리밍 노드를 사용하여 작업의 주요 메트릭을 시각화하는 데 도움이 될 수 있습니다. 또한 문제를 해결할 때 문제의 원인을 파악할 수 있습니다.
이 문서에서는 실제 작업 다이어그램을 사용하여 작업 성능을 분석하고 Azure Portal에서 해당 병목 상태를 신속하게 식별하는 방법을 보여 줍니다.
Important
이 기능은 현재 미리 보기로 제공됩니다. 베타, 미리 보기로 제공되거나 아직 일반 공급으로 릴리스되지 않은 Azure 기능에 적용되는 약관은 Microsoft Azure 미리 보기에 대한 추가 사용 약관을 참조하세요.
작업의 병렬 처리 식별
병렬 처리를 사용하는 작업은 더 나은 성능을 제공할 수 있는 Stream Analytics의 확장 가능한 시나리오입니다. 작업이 병렬 모드가 아닌 경우 성능에 특정 병목 상태가 있을 가능성이 큽니다. 작업이 병렬 모드에 있는지 여부를 식별하는 것이 중요합니다. 실제 작업 다이어그램은 작업 병렬 처리를 설명하는 시각적 그래프를 제공합니다. 실제 작업 다이어그램에서 여러 스트리밍 노드 간에 데이터 상호 작용이 있는 경우 이 작업은 더 많은 주의가 필요한 비병렬 작업입니다. 예를 들어 비병렬 작업 다이어그램은 다음과 같습니다.
Azure Portal의 쿼리 편집기 또는 Visual Studio Code ASA 확장 내에서 작업 다이어그램 시뮬레이터를 사용하여 쿼리를 다시 작성하거나 입력/출력 구성을 업데이트하여 병렬 작업(아래 예제 참조)으로 최적화하는 것이 좋습니다. 자세한 내용은 작업 다이어그램 시뮬레이터를 사용하여 쿼리 최적화(미리 보기)를 참조하세요.
병렬 작업의 병목 상태를 식별하는 주요 메트릭
워터마크 지연 및 백로그된 입력 이벤트는 Stream Analytics 작업의 성능을 결정하는 주요 메트릭입니다. 작업의 워터마크 지연이 지속적으로 증가하고 입력 이벤트가 백로그되면 작업이 입력 이벤트의 속도를 따라가지 못하고 적시에 출력을 생성할 수 없습니다. 컴퓨팅 리소스 관점에서 볼 때 CPU와 메모리 리소스는 이 경우 높은 수준으로 활용됩니다.
실제 작업 다이어그램은 병목 상태를 쉽게 식별할 수 있도록 전체 그림을 제공하기 위해 다이어그램의 이러한 주요 메트릭을 함께 시각화합니다.
메트릭 정의에 대한 자세한 내용은 Azure Stream Analytics 노드 이름 차원을 참조하세요.
고르지 않은 분산 입력 이벤트 식별(데이터 기울이기)
병렬 모드에서 이미 실행 중인 작업이 있지만 높은 워터마크 지연이 관찰되는 경우 이 방법을 사용하여 이유를 확인합니다.
근본 원인을 찾으려면 Azure Portal에서 실제 작업 다이어그램을 엽니다. 모니터링에서 작업 다이어그램(미리 보기)을 선택하고 실제 다이어그램으로 전환합니다.
실제 다이어그램에서 스트리밍 노드를 정렬(권장)하도록 각 노드의 워터마크 지연 값을 확인하거나 워터마크 지연 히트맵 설정을 선택하여 모든 파티션에 높은 워터마크 지연이 있는지 또는 일부만 있는지 쉽게 파악할 수 있습니다.
위에서 수행한 히트맵 설정을 적용하면 왼쪽 상단에 높은 워터마크 지연이 있는 스트리밍 노드가 표시됩니다. 그러면 해당 스트리밍 노드에 다른 스트리밍 노드보다 훨씬 더 많은 입력 이벤트가 있는지 확인할 수 있습니다. 이 예제에서는 streamingnode#0 및 streamingnode#1에 더 많은 입력 이벤트가 있습니다.
스트리밍 노드에 개별적으로 할당된 파티션 수를 추가로 확인하여 더 많은 입력 이벤트가 더 많은 파티션이 할당되어 있는지 또는 더 많은 입력 이벤트가 있는 특정 파티션으로 인해 발생하는지 확인할 수 있습니다. 이 예제에서는 모든 스트리밍 노드에 두 개의 파티션이 있습니다. 즉, streamingnode#0 및 streamingnode#1에는 다른 파티션보다 더 많은 입력 이벤트가 포함된 특정 파티션이 있습니다.
streamingnode#0 및 streamingnode#1의 다른 파티션보다 더 많은 입력 이벤트가 있는 파티션을 찾으려면 다음 단계를 수행합니다.
- 차트 섹션에서 차트 추가를 선택합니다.
- 메트릭에 입력 이벤트 추가 및 분할기에 파티션 ID 추가
- 적용을 선택하여 입력 이벤트 차트를 불러옵니다.
- 다이어그램의 streamingnode#0 및 streamingnode#1 틱
두 스트리밍 노드의 파티션으로 필터링된 입력 이벤트 메트릭이 포함된 아래 차트가 표시됩니다.
어떤 추가 작업을 취할 수 있나요?
예제에서 볼 수 있듯이 이 파티션(0과 1)은 다른 파티션보다 더 많은 입력 데이터를 포함하고 있습니다. 이를 데이터 기울이기라고 합니다. 데이터 기울이기가 있는 파티션을 처리하는 스트리밍 노드는 다른 노드보다 더 많은 CPU 및 메모리 리소스를 사용해야 합니다. 이러한 불균형으로 인해 성능이 저하되고 워터마크 지연이 증가합니다. 두 스트리밍 노드의 CPU 및 메모리 사용량은 실제 다이어그램에서도 확인할 수 있습니다. 이 문제를 완화하려면 입력 데이터를 더 균등하게 다시 분할해야 합니다.
오버로드된 CPU 또는 메모리의 원인 식별
앞서 언급한 데이터 기울이기 상황 없이 병렬 작업에서 워터마크 지연이 증가하는 경우 모든 스트리밍 노드에서 상당한 양의 데이터로 인해 성능이 저하될 수 있습니다. 실제 다이어그램을 사용하여 작업에 이러한 특성이 있음을 확인할 수 있습니다.
실제 작업 다이어그램을 열고 모니터링 아래의 작업 Azure Portal로 이동하여 작업 다이어그램(미리 보기)을 선택한 다음, 실제 다이어그램으로 전환합니다. 아래와 같이 로드된 실제 다이어그램이 표시됩니다.
각 스트리밍 노드의 CPU 및 메모리 사용률을 확인하여 모든 스트리밍 노드의 사용률이 너무 높은지 확인합니다. 모든 스트리밍 노드에서 CPU 및 SU 사용률이 높으면(80% 이상) 이 작업에 각 스트리밍 노드 내에서 처리되는 데이터 양이 많다는 결론을 내릴 수 있습니다.
위의 경우에서 CPU 사용률은 약 90%이고 메모리 사용률은 이미 100%입니다. 이는 각 스트리밍 노드에 데이터를 처리할 리소스가 부족했음을 보여 줍니다.
각 스트리밍 노드에 얼마나 많은 파티션이 할당되어 있는지 확인하여 기존 스트리밍 노드의 부담을 줄이도록 파티션의 균형을 맞추기 위해 더 많은 스트리밍 노드가 필요한지 결정할 수 있습니다.
이 경우 각 스트리밍 노드에는 4개의 파티션이 할당되므로 스트리밍 노드에 너무 많이 표시됩니다.
어떤 추가 작업을 취할 수 있나요?
입력 데이터를 줄이기 위해 각 스트리밍 노드의 파티션 수를 줄이는 것이 좋습니다. 스트리밍 노드 수를 8에서 16으로 늘려 각 스트리밍 노드에 할당된 SU를 노드당 두 개의 파티션으로 두 배 늘릴 수 있습니다. 또는 각 스트리밍 노드가 한 파티션의 데이터를 처리하도록 SU를 4배로 늘릴 수 있습니다.
스트리밍 노드와 스트리밍 단위 간의 관계에 대해 자세히 알아보려면 스트리밍 단위 및 스트리밍 노드 이해를 참조하세요.
한 스트리밍 노드가 한 파티션의 데이터를 처리할 때 워터마크 지연이 계속 증가하는 경우 어떻게 해야 하나요? 더 많은 파티션으로 입력을 다시 분할하여 각 파티션의 데이터 양을 줄입니다. 자세한 내용은 재분할을 사용하여 Azure Stream Analytics 작업 최적화를 참조하세요.