앱에서 코드 최적화를 설정하고 구성한 후에는 받은 모든 인사이트에 액세스하고 볼 수 있습니다.
Access 코드 최적화
다음 두 진입점을 통해 코드 최적화에 액세스합니다.
코드 최적화 통합 개요 페이지(미리 보기)
코드 최적화 개요 페이지를 사용하여 코드 최적화 결과를 봅니다. 통합 개요에서는 여러 구독의 여러 Application Insights 리소스에 대한 결과를 액세스할 수 있습니다.
필터 필드를 검색하거나 다음 필터를 설정하여 통합된 결과를 필터링할 수 있습니다.
| 필터 | 설명 | 기본값 |
|---|---|---|
| 시간 범위 | 코드 최적화 결과를 보려는 시간 범위를 선택합니다. | 지난 24시간 |
| 역할 | 보고 서비스 시스템 또는 워크로드에 할당된 역할 이름입니다. Application Insights 구성을 통해 업데이트합니다. | 모든 역할 |
| 구독 | 해당 인사이트가 속한 구독입니다. 둘 이상을 선택할 수 있습니다. | 해당 없음(N/A) |
| Application Insights (애플리케이션 인사이트) | 애플리케이션과 연결된 Application Insights 리소스입니다. 둘 이상을 선택합니다. | 해당 없음(N/A) |
| 인사이트 유형 | CPU, 메모리, 차단 및 예외와 같은 문제의 유형입니다. | 모든 형식 |
그런 다음 다음을 포함하여 원하는 뷰에 따라 인사이트 결과의 열을 정렬할 수 있습니다.
- 성능 이슈
- 부모 메서드의 전체 이름
개별 Application Insights 리소스
해당 리소스의 왼쪽 메뉴에서 개별 Application Insights 리소스와 관련된 코드 최적화에 액세스합니다. 성능> 선택하고 상단 메뉴에서 코드 최적화 단추를 선택합니다.
필터 필드를 검색하거나 다음 필터를 설정하여 개별 리소스에 대한 결과를 필터링합니다.
| 필터 | 설명 | 기본값 |
|---|---|---|
| 시간 범위 | 코드 최적화 결과를 보려는 시간 범위를 선택합니다. | 지난 24시간 |
| 역할 | 보고 서비스 시스템 또는 워크로드에 할당된 역할 이름입니다. Application Insights 구성을 통해 업데이트할 수 있습니다. | 모든 역할 |
| 인사이트 유형 | CPU, 메모리, 차단 및 예외와 같은 문제의 유형입니다. | 모든 형식 |
그런 다음 다음을 포함하여 원하는 뷰에 따라 인사이트 결과의 열을 정렬합니다.
- 성능 이슈
- 해당 문제가 포함된 프로필 수
- 부모 메서드의 전체 이름
예상 메모리 및 CPU 최대 사용률 해석
코드 최적화는 애플리케이션의 작업 양에 따라 예상 CPU 및 메모리를 결정합니다. 코드 최적화에는 메모리 및 CPU 백분율 외에도 다음이 포함됩니다.
- 실제 할당 크기(바이트)
- 호출 내에서 할당된 형식의 분석
메모리
메모리의 경우 이 숫자는 추적에 있는 모든 할당의 백분율입니다. 예를 들어 문제가 24% 메모리를 사용하는 경우 해당 호출에서 할당의 24% 사용합니다.
CPU (중앙 처리 장치)
CPU의 경우 백분율은 컴퓨터의 CPU 수(예: 4코어 또는 8코어)와 추적 시간을 기반으로 합니다. 예를 들어 추적 길이가 10초이고 CPU가 4개 있다고 가정해 보겠습니다. CPU 시간은 총 40초입니다. 인사이트에 코드 줄이 CPU의 5%를 사용하고 있다고 표시되면 40초의 5%, 즉 2초를 사용하는 것입니다.
차단
차단 인사이트는 스레드가 I/O 작업, 잠금 또는 절전 모드와 같은 리소스를 기다리는 데 시간을 소비하는 위치를 보여 줍니다. 코드 최적화는 차단 시간(초)을 보고하고 모든 스레드 및 코어에서 집계하므로 CPU 메트릭과 마찬가지로 합계가 캡처 기간을 초과할 수 있습니다.
이 메트릭을 사용하여 다음과 같은 대기 시간 병목 상태를 식별합니다.
- 스레드 간 잠금 경합
- 동기 I/O 작업
- 비동기 작업에 대한 호출 차단
예외
코드 최적화는 스냅샷 디버거가 수집하는 스냅샷에서 예외 인사이트를 추출합니다. 앱에서 스냅샷 디버거를 사용하도록 설정하고 스냅샷을 수집하는 경우 코드 최적화는 인사이트 추출을 위해 자동으로 처리합니다.
인사이트 보기
코드 최적화 결과를 정렬하고 필터링한 후 각 인사이트를 선택하여 창에서 다음 세부 정보를 확인합니다.
- 성능 버그 인사이트에 대한 자세한 설명입니다.
- 전체 호출 스택입니다.
- 성능 문제를 해결하는 방법에 대한 권장 사항.
- 문제의 추세 영향 및 임계값의 타임라인입니다.
인사이트
인사이트 탭은 다음을 제공합니다.
- 선택한 문제에 대한 간략한 설명입니다.
- 리소스 메모리 또는 CPU 사용량의 현재 상태입니다.
- 문제 해결을 위한 AI 생성 권장 사항입니다.
비고
인사이트가 표시되지 않으면 코드 최적화 서비스에서 코드에서 성능 병목 상태를 발견하지 못했을 수 있습니다. 다시 확인하여 인사이트가 표시되는지 확인합니다.
호출 스택
인사이트 세부 정보 창의 호출 스택 제목 아래에서 다음을 수행할 수 있습니다.
- 확장을 선택하여 성능 문제를 둘러싼 전체 호출 스택을 봅니다.
- 호출 스택을 복사하려면 복사를 선택합니다.
타임라인
세부 정보 창의 타임라인 아래에서 특정 성능 문제의 영향 및 임계값의 타임라인을 보여 주는 그래프를 볼 수 있습니다. 결과는 설정한 필터에 따라 달라집니다. 예를 들어 지난 24시간 동안의 메모리 "비효율적 String.SubString()" 성능 문제에 대한 인사이트는 다음과 같습니다.