다음을 통해 공유


코드 최적화를 사용하여 런타임 동작 모니터링 및 분석

특히 동적 클라우드의 프로덕션 환경에서 실행되는 경우 애플리케이션의 성능 문제를 진단하는 것이 어려울 수 있습니다. 애플리케이션의 느린 응답은 파이프라인에서 요청을 처리하는 인프라, 프레임워크 또는 애플리케이션 코드로 인해 발생할 수 있습니다.

Azure 애플리케이션 Insights의 AI 기반 서비스인 코드 최적화는 .NET용 Application Insights Profiler와 함께 작동하여 코드 수준에서 CPU 및 메모리 사용량 성능 문제를 감지하고 이를 해결하는 방법에 대한 권장 사항을 제공합니다.

프로덕션 환경에서 수집된 실시간 성능 데이터 및 인사이트를 사용하여 정보에 입각한 의사 결정을 내리고 코드를 최적화합니다.

Azure Portal에서 코드 최적화를 검토할 수 있습니다.

.NET용 코드 최적화 및 애플리케이션 인사이트 프로파일러

.NET 프로파일러 및 코드 최적화는 성능 문제 검색에 대한 전체적인 접근 방식을 제공하기 위해 함께 작동합니다.

코드 최적화

코드 최적화는 .NET용 Application Insights Profiler에서 수집한 프로파일링 데이터를 식별, 분석 및 확인합니다. .NET Profiler가 Application Insights에 데이터를 업로드할 때 기계 학습 모델은 일부 데이터를 분석하여 애플리케이션의 코드를 최적화할 수 있는 위치를 찾습니다. 코드 최적화:

  • 시간에 따라 수집된 집계 데이터를 표시합니다.
  • 데이터를 애플리케이션 코드의 메서드 및 함수와 연결합니다.
  • 코드 내에서 병목 현상을 찾아 문제의 원인을 추적합니다.
  • 인사이트를 기반으로 코드 수준 성능 수정을 제공합니다.

식별

코드 최적화 통합 개요 페이지를 사용하여 Azure Portal에서 Azure 구독 및 Application Insights 리소스에 대한 모든 코드 최적화 권장 사항을 볼 수 있습니다. 코드에서 병목 상태를 식별하고 개발, 테스트, 사전 프로덕션 및 프로덕션 환경에 대한 코드 수준 권장 사항을 검토합니다.

분석하다

환경의 데이터가 수집되면 코드 최적화는 시간 단위로 코드 수준 권장 사항을 제공합니다. 기본적으로 집계된 데이터 뷰는 최근 식별된 문제의 롤링 24시간 창을 표시하며, 과거 이벤트를 검토하고 분석할 수 있는 30일의 기록이 있습니다.

해결

코드 최적화 결과를 식별하고 분석한 후 코드 최적화 Visual StudioVisual Studio Code 확장을 사용하여 코드에서 이러한 문제를 해결할 수 있습니다. 이러한 확장을 사용하여 GitHub Copilot와 상호 작용하여 코드 최적화 인사이트에 기반한 코드 수정을 받습니다.

Azure Portal의 코드 최적화 페이지에서 GitHub 문제를 만들고 GitHub Copilot 코딩 에이전트에 할당할 수도 있습니다. 여기에서 GitHub Copilot는 끌어오기 요청을 열고 코드 최적화 인사이트에 따라 코드 변경 커밋을 푸시합니다.

데모 비디오

.NET용 Application Insights Profiler

.NET Profiler는 밀리초까지 특정 요청을 추적하는 데 중점을 둡니다. 이는 애플리케이션 내의 문제에 대해 효과적으로 "큰 그림"을 보여 주고 이를 해결하기 위한 일반적인 모범 사례를 제공합니다.

.NET용 Application Insights Profiler를 사용하면 시나리오에 관계없이 Azure에서 실행되는 애플리케이션에 대한 성능 추적을 캡처, 식별 및 볼 수 있습니다. .NET Profiler 추적 프로세스는 대규모로 자동으로 수행되며 사용자에게 부정적인 영향을 주지 않습니다. .NET Profiler는 다음을 식별합니다.

  • 고객이 작성한 각 웹 요청에 대한 중앙값, 가장 빠른 응답 시간 및 가장 느린 응답 시간입니다.
  • 특정 웹 요청을 처리하는 데 가장 많은 시간을 소비하는 "핫" 코드 경로입니다.

모든 Azure 애플리케이션에서 .NET용 Profiler를 사용하도록 설정하여 다음 트리거를 사용하여 데이터를 수집합니다.

  • 샘플링 트리거: 약 2분 동안 한 시간에 한 번씩 Profiler를 임의로 시작합니다.
  • CPU 트리거: CPU 사용량 비율이 80%를 초과하면 Profiler를 시작합니다.
  • 메모리 트리거: 메모리 사용량이 80%를 초과하면 Profiler를 시작합니다.

이러한 각 트리거는 구성, 사용 또는 사용 안 함으로 설정될 수 있습니다.

비용 및 오버헤드

코드 최적화는 .NET용 Application Insights Profiler를 사용하도록 설정한 후 자동으로 생성됩니다. 기본적으로 Profiler는 30초 동안 또는 CPU 또는 메모리 사용량이 많은 기간 동안 30초 동안 매시간 추적을 적극적으로 수집합니다. 시간별 추적(샘플링이라고 함)은 사전 튜닝에 적합하며 높은 CPU 및 메모리 추적(트리거라고 함)은 사후 문제 해결에 유용합니다.

비고

.NET용 Application Insights Profiler가 적극적으로 실행되고 추적을 수집하는 경우 일반적으로 CPU 및 메모리 오버헤드의 5%에서 15% 사이를 서버에 추가합니다.

.NET Profiler에서 캡처한 데이터를 저장하는 데 추가 비용은 없습니다. 데이터는 15일 후에 자동으로 삭제됩니다.

일부 코드 최적화 기능(예: 코드 수준 수정 제안)에는 GitHub용 코필로트 및/또는 Azure용 Copilot가 필요합니다.

.NET Profiler 활성화

프레임워크 및 Azure 서비스가 발전함에 따라 다양한 옵션을 통해 Azure에서 실행되는 .NET 앱에 .NET Profiler를 사용하도록 설정할 수 있습니다.

Azure 서비스 사용하도록 설정하는 방법 세부 정보
대부분의 Azure 서비스 애플리케이션의 코드 변경
(가장 보편적)
.NET 앱이 Azure PaaS 서비스 또는 컨테이너의 변형에서 실행되는 경우 .NET Profiler를 사용하도록 설정하는 두 가지 옵션 중에서 선택할 수 있습니다.
- ASP.NET Core용 Application Insights ProfilerApplication Insights SDK를 사용합니다.
- Azure Monitor OpenTelemetry Distro를 사용하는 새로운Azure Monitor OpenTelemetry Profiler for NET(미리 보기)
Azure App Service 애플리케이션에 대한 코드 변경 없음 Profiler는 사전 설치되어 있으므로, 포털에서 .NET용 Profiler를 다음과 같이 활성화할 수 있습니다.
- Azure App Service - Windows의 .NET 앱
- Azure Functions - App Service 요금제
가상 머신 애플리케이션에 대한 코드 변경 없음 애플리케이션 코드에서 Application Insights SDK를 사용하도록 설정하면 ARM 템플릿에서 .NET용 Profiler를 사용하도록 설정할 수 있습니다.
- Windows용 Azure Virtual Machines 및 Virtual Machine Scale Sets
- Azure Service Fabric

.NET용 Profiler를 사용하도록 설정하기 위한 세부 정보 및 예제

비고

현재 미리 보기 상태인 Azure Monitor Application Insights용 Java Profiler를 사용할 수도 있습니다.

지원되는 지역

코드 최적화는 Application Insights와 동일한 지역에서 사용할 수 있습니다. 다음 명령을 사용하여 사용 가능한 지역을 확인할 수 있습니다.

az account list-locations -o table

연결 문자열을 사용하여 명시적인 지역을 설정할 수 있습니다. 예를 통해 연결 문자열에 대해 자세히 알아봅니다.

제한점

웹앱 프로파일링:

  • 추가 비용 없이 .NET Profiler를 사용할 수 있지만 웹앱은 최소한 Azure 앱 Service의 Web Apps 기능의 기본 계층에서 호스트되어야 합니다.
  • 각 웹앱에는 하나의 프로파일러만 연결할 수 있습니다.

문제 해결

  • 프로파일러

    .NET용 Profiler를 사용하도록 설정했지만 추적이 표시되지 않는 경우 문제 해결 가이드참조하세요.

  • 코드 최적화

    문제가 발생했나요? 시나리오 솔루션에 대한 코드 최적화 문제 해결 가이드 를 확인합니다.

다음 단계

Azure 서비스에서 코드 최적화를 사용하여 .NET Profiler를 사용하도록 설정하는 방법을 알아봅니다.