Sdílet prostřednictvím


Diagnostika kanálu událostí ASP.NET Core Blazor WebAssembly

Tento článek popisuje diagnostické nástroje a jejich použití v Blazor WebAssembly aplikacích.

Předpoklad pro všechny scénáře

Nainstalujte nástroje sestavení .NET WebAssembly:

dotnet workload install wasm-tools

Jak aplikace WebAssembly používá paměť a jak řešit potíže s nevrácenou pamětí

Do souboru projektu aplikace (.csproj) přidejte následující vlastnosti po dobu trvání šetření:

<PropertyGroup>
  <EnableDiagnostics>true</EnableDiagnostics>
</PropertyGroup>

Výstraha

Nepovolujte diagnostiku v produkčním prostředí, protože má negativní dopad na výkon.

Sestavte aplikaci pomocí wasm-tools úlohy.

Otevřete aplikaci v prohlížeči a přejděte na problematické stránky nebo komponenty.

Provést výpis spravované paměti voláním collectGcDump JavaScriptového rozhraní API:

globalThis.getDotnetRuntime(0).collectGcDump();

Volejte předchozí rozhraní API z konzoly vývojářských nástrojů prohlížeče nebo kódu JavaScriptu aplikace.

Soubor .nettrace se stáhne z prohlížeče do místní složky, obvykle do složky ve Downloads Windows.

Převeďte výpis do formátu .gcdump pomocí nástroje dotnet-gcdump. Chcete-li zobrazit převedený .gcdump soubor, použijte Visual Studio nebo PrefView.

Další informace naleznete v tématu Zobrazení výpisu paměti GC zachyceného z dotnet-gcdump.

Jak aplikace WebAssembly používá procesor a jak najít pomalé nebo horké metody

Do souboru projektu aplikace (.csproj) přidejte následující vlastnosti po dobu trvání šetření:

<PropertyGroup>
  <EnableDiagnostics>true</EnableDiagnostics>
  <!-- Disable debugger -->
  <WasmDebugLevel>0</WasmDebugLevel>
  <!-- Sampling in all methods, see below for filtering options -->
  <WasmPerformanceInstrumentation>all</WasmPerformanceInstrumentation>
</PropertyGroup>

Výstraha

Nepovolujte diagnostiku v produkčním prostředí, protože má negativní dopad na výkon.

Sestavte aplikaci s pracovním zatížením wasm-tools .

Otevřete aplikaci v prohlížeči a přejděte na problematické stránky nebo komponenty.

Začněte sbírat ukázky CPU po dobu 60 sekund voláním JavaScriptového collectCpuSamples rozhraní API.

globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60});

Volejte předchozí rozhraní API z konzoly vývojářských nástrojů prohlížeče nebo kódu JavaScriptu aplikace.

Začněte používat aplikaci ke spuštění problematického kódu.

Po předdefinované době prohlížeč stáhne .nettrace soubor do místní složky, obvykle do složky ve Downloads Windows. K zobrazení .nettrace souboru použijte Visual Studio nebo PrefView.

Další informace naleznete v tématu Použití eventPipe k trasování aplikace .NET.

HlavičkaTiming-Allow-Origin HTTP umožňuje přesnější měření času.

Jak sledovat metriky vystavené aplikací WebAssembly

Do souboru projektu aplikace (.csproj) přidejte následující vlastnosti po dobu trvání šetření:

<PropertyGroup>
  <EnableDiagnostics>true</EnableDiagnostics>
  <MetricsSupport>true</MetricsSupport>
  <EventSourceSupport>true</EventSourceSupport>
</PropertyGroup>

Výstraha

Nepovolujte diagnostiku v produkčním prostředí, protože má negativní dopad na výkon.

Sestavte aplikaci s pracovním zatížením wasm-tools .

Otevřete aplikaci v prohlížeči a přejděte na problematické stránky nebo komponenty.

Začněte kolektovat metriky po dobu 60 sekund voláním javascriptového collectMetrics rozhraní API:

globalThis.getDotnetRuntime(0).collectMetrics({durationSeconds: 60});

Volejte předchozí rozhraní API z konzoly vývojářských nástrojů prohlížeče nebo kódu JavaScriptu aplikace.

Po předdefinované době prohlížeč stáhne .nettrace soubor do místní složky, obvykle do složky ve Downloads Windows. K zobrazení .nettrace souboru použijte Visual Studio nebo PrefView.

Další informace naleznete v tématu Použití eventPipe k trasování aplikace .NET.

Vlastnosti nástroje MSBuild, které umožňují integraci diagnostiky

Vlastnictví Výchozí Nastavit hodnotu na... Popis
<EnableDiagnostics> false true Umožňuje podporu trasování výkonu WebAssembly.
<WasmPerformanceInstrumentation> Žádná hodnota Viz tabulka† Povolí instrumentaci potřebnou pro profiler vzorkování. Vlastnost se řídí syntaxí callspec . †Povolené hodnoty najdete v následující tabulce.
<MetricsSupport> false true System.Diagnostics.Metrics Povolí podporu. Další informace najdete v System.Diagnostics.Metrics jmenném prostoru.
<EventSourceSupport> false true EventPipe Povolí podporu. Další informace najdete v tématu Diagnostika a instrumentace: Pozorovatelnost a telemetrie.

Následující tabulka popisuje hodnoty, <WasmPerformanceInstrumentation> které lze použít.

<WasmPerformanceInstrumentation> hodnota Popis
all Všechna sestavení
program Sestavení vstupního bodu
{ASSEMBLY} Určuje sestavení ({ASSEMBLY})
M:Type:{METHOD} Určuje metodu ({METHOD})
N:{NAMESPACE} Určuje obor názvů ({NAMESPACE})
T:{TYPE} Určuje typ ({TYPE}).
+EXPR Obsahuje výraz
-EXPR Vyloučení výrazu

Kód by měl často přenechávat kontrolu hlavní smyčce prohlížeče, aby bylo možné shromažďovat stopu. Při provádění dlouhotrvajících smyček by interní diagnostické vyrovnávací paměti mohly přetékat.

Upozornění

Povolení profilátorů a diagnostických nástrojů má negativní vliv na velikost a výkon, takže nepublikujte aplikaci pro produkční prostředí s povolenými profilátory.

Dodatečné zdroje