이 문서에서는 Blazor WebAssembly 앱에서 이벤트 파이프 진단 도구, 카운터 및 가비지 수집기 힙 덤프를 가져오는 방법을 설명합니다.
전제 조건
.NET WebAssembly 빌드 도구를 설치합니다.
dotnet workload install wasm-tools
.NET Core 진단 클라이언트 라이브러리 예제
.NET Core 진단 클라이언트 라이브러리를 사용하여 NetTrace(.nettrace
) 메시지를 구문 분석하고 유효성을 검사합니다.
자세한 내용은 .NET Core 진단 설명서 및 IpcMessage
API(참조 원본)를 참조하세요.
비고
문서 링크는 .NET 참조 소스를 가리키며, 일반적으로 저장소의 기본 브랜치를 로드합니다. 이는 .NET의 다음 릴리스를 위한 현재 개발 상태를 나타냅니다. 특정 릴리스를 위한 태그를 선택하려면 Switch branches or tags 드롭다운 목록을 사용하세요. 자세한 내용은 ASP.NET Core 소스 코드(dotnet/AspNetCore.Docs #26205)의 버전 태그를 선택하는 방법을 참조하세요.
다음 표의 MSBuild 속성은 프로파일러 통합을 사용하도록 설정합니다.
재산 | 기본값 | 값을 ...로 설정합니다. | 설명 |
---|---|---|---|
<WasmPerfTracing> |
false |
true |
WebAssembly 성능 추적을 지원합니다. |
<WasmPerfInstrumentation> |
값 없음 | 표를 참조하세요† | 샘플링 프로파일러에 필요한 계측을 사용하도록 설정합니다. 이 속성은 callspec 구문을 따릅니다. † 허용 가능한 값은 다음 표를 참조하세요. |
<MetricsSupport> |
false |
true |
System.Diagnostics.Metrics 지원을 사용하도록 설정합니다. 자세한 내용은 네임스페이스를System.Diagnostics.Metrics 참조하세요. |
<EventSourceSupport> |
false |
true |
EventPipe 지원을 사용하도록 설정합니다. 자세한 내용은 진단 및 계측: 관찰성 및 원격 분석을 참조하세요. |
다음 표에서는 허용되는 <WasmPerfInstrumentation>
값에 대해 설명합니다.
<WasmPerfInstrumentation> 값 |
설명 |
---|---|
all |
모든 어셈블리 |
program |
진입점 조립 |
{ASSEMBLY} |
어셈블리를 지정합니다({ASSEMBLY} ). |
M:Type:{METHOD} |
메서드{METHOD} ()를 지정합니다. |
N:{NAMESPACE} |
네임스페이스({NAMESPACE} )를 지정합니다. |
T:{TYPE} |
형식({TYPE} )을 지정합니다. |
+EXPR |
표현 포함 |
-EXPR |
표현 제외 |
프로파일러를 사용하도록 설정하면 크기 및 성능에 부정적인 영향을 주므로 프로파일러를 사용하도록 설정된 프로덕션용 앱을 게시하지 마세요. 다음 예제에서는 앱이 (.NET CLI)를 사용하여 빌드 /p:BlazorSampleProfilingEnabled=true
되거나 <BlazorSampleProfilingEnabled>true</BlazorSampleProfilingEnabled>
Visual Studio 게시 프로필에서만 프로파일링을 사용하도록 설정하는 속성 그룹 섹션에서 조건이 설정됩니다. 여기서 "BlazorSampleProfilingEnabled
"는 사용자가 선택하고 다른 기호 이름과 충돌하지 않는 사용자 지정 기호 이름입니다.
앱의 프로젝트 파일(.csproj
):
<PropertyGroup Condition="'$(BlazorSampleProfilingEnabled)' == 'true'">
<WasmPerfTracing>true</WasmPerfTracing>
<MetricsSupport>true</MetricsSupport>
<EventSourceSupport>true</EventSourceSupport>
</PropertyGroup>
또는 .NET CLI를 사용하여 앱을 빌드할 때 기능을 사용하도록 설정합니다. 명령에 전달된 dotnet build
다음 옵션은 이전 MS Build 속성 구성을 미러링합니다.
/p:WasmPerfTracing=true /p:WasmPerfInstrumentation=all /p:MetricsSupport=true /p:EventSourceSupport=true
Timing-Allow-Origin
HTTP 헤더를 사용하면 보다 정확한 시간 측정을 수행할 수 있습니다.
EventPipe 프로파일러
EventPipe 는 ETW 및 perf_events 유사한 추적 데이터를 수집하는 데 사용되는 런타임 구성 요소입니다.
이 <WasmPerfInstrumentation>
속성을 사용하여 진단 서버에 CPU 샘플링 계측을 사용하도록 설정합니다. 메모리 덤프 또는 카운터에는 이 설정이 필요하지 않습니다. 앱 실행 속도가 느려집니다. 성능 프로파일링에 대해서만 사용하도록 설정합니다.
프로파일러를 사용하도록 설정하면 크기 및 성능에 부정적인 영향을 주므로 프로파일러를 사용하도록 설정된 프로덕션용 앱을 게시하지 마세요. 다음 예제에서는 앱이 (.NET CLI)를 사용하여 빌드 /p:BlazorSampleProfilingEnabled=true
되거나 <BlazorSampleProfilingEnabled>true</BlazorSampleProfilingEnabled>
Visual Studio 게시 프로필에서만 프로파일링을 사용하도록 설정하는 속성 그룹 섹션에서 조건이 설정됩니다. 여기서 "BlazorSampleProfilingEnabled
"는 사용자가 선택하고 다른 기호 이름과 충돌하지 않는 사용자 지정 기호 이름입니다.
<PropertyGroup Condition="'$(BlazorSampleProfilingEnabled)' == 'true'">
<WasmPerfInstrumentation>all</WasmPerfInstrumentation>
</PropertyGroup>
CPU 카운터를 60초 동안 collectCpuSamples(durationSeconds)
를 사용하여 수집합니다.
globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60});
추적을 보려면 EventPipe를 사용하여 .NET 애플리케이션을 추적합니다.
GC(가비지 수집기) 덤프
(dotnet-gcdump
/convert' 옵션) 전역 도구는collect
EventPipe를 사용하여 라이브 .NET 프로세스의 GC(가비지 수집기) 덤프를 수집합니다.
collectGcDump
을 사용하여 라이브 .NET 프로세스에서 GC(가비지 수집기) 덤프를 수집하십시오.
globalThis.getDotnetRuntime(0).collectGcDump();
캡처된 GC 덤프를 보려면 dotnet-gcdump에서 캡처된 GC 덤프 보기를 참조하세요.
카운터 추적
dotnet-counters collect
는 임시 상태 모니터링 및 1단계 수준 성능 조사를 위한 성능 모니터링 도구입니다.
진단 카운터를 60초 동안 collectPerfCounters(durationSeconds)
:를 사용하여 수집합니다.
globalThis.getDotnetRuntime(0).collectPerfCounters({durationSeconds: 60});
추적을 보려면 EventPipe를 사용하여 .NET 애플리케이션을 추적합니다.
추가 리소스
ASP.NET Core