Udostępnij za pomocą


Diagnostyka potoku zdarzeń ASP.NET Core Blazor WebAssembly

W tym artykule opisano narzędzia diagnostyczne i sposób ich używania w Blazor WebAssembly aplikacjach.

Wymaganie wstępne dla wszystkich scenariuszy

Zainstaluj narzędzia kompilacji .NET WebAssembly:

dotnet workload install wasm-tools

Jak aplikacja WebAssembly używa pamięci i jak rozwiązywać problemy z przeciekami pamięci

W pliku projektu aplikacji (.csproj) dodaj następujące właściwości do czasu trwania badania:

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

Ostrzeżenie

Nie włączaj diagnostyki w środowisku produkcyjnym, ponieważ ma negatywny wpływ na wydajność.

Zbuduj swoją aplikację korzystając z wasm-tools zestawu funkcji.

Otwórz aplikację w przeglądarce i przejdź do problematycznych stron lub składników.

Wykonaj zrzut pamięci zarządzanej, wywołując collectGcDump interfejs API języka JavaScript.

globalThis.getDotnetRuntime(0).collectGcDump();

Wywołaj powyższy interfejs API z konsoli narzędzi deweloperskich przeglądarki lub kodu JavaScript aplikacji.

Plik .nettrace jest pobierany z przeglądarki do folderu lokalnego, zazwyczaj Downloads folderu w systemie Windows.

Przekonwertuj zrzut do formatu .gcdump za pomocą narzędzia dotnet-gcdump. Aby wyświetlić przekonwertowany .gcdump plik, użyj programu Visual Studio lub prefView.

Aby uzyskać więcej informacji, zobacz Zrzut GC przechwycony przez dotnet-gcdump.

Jak aplikacja WebAssembly używa procesora CPU i sposobu znajdowania powolnych lub gorących metod

W pliku projektu aplikacji (.csproj) dodaj następujące właściwości do czasu trwania badania:

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

Ostrzeżenie

Nie włączaj diagnostyki w środowisku produkcyjnym, ponieważ ma negatywny wpływ na wydajność.

Skompiluj aplikację przy użyciu wasm-tools obciążenia.

Otwórz aplikację w przeglądarce i przejdź do problematycznych stron lub składników.

Rozpocznij zbieranie próbek procesora CPU przez 60 sekund, wywołując collectCpuSamples interfejs API JavaScript.

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

Wywołaj powyższy interfejs API z konsoli narzędzi deweloperskich przeglądarki lub kodu JavaScript aplikacji.

Zacznij używać aplikacji do uruchamiania problematycznego kodu.

Po wstępnie zdefiniowanym okresie przeglądarka pobiera .nettrace plik do folderu lokalnego, zazwyczaj Downloads folderu w systemie Windows. Aby wyświetlić .nettrace plik, użyj programu Visual Studio lub PrefView.

Aby uzyskać więcej informacji, zobacz Śledzenie aplikacji .NET przy użyciu interfejsu EventPipe.

NagłówekTiming-Allow-Origin HTTP umożliwia dokładniejsze pomiary czasu.

Jak obserwować metryki wyemitowane przez aplikację WebAssembly

W pliku projektu aplikacji (.csproj) dodaj następujące właściwości do czasu trwania badania:

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

Ostrzeżenie

Nie włączaj diagnostyki w środowisku produkcyjnym, ponieważ ma negatywny wpływ na wydajność.

Skompiluj aplikację przy użyciu wasm-tools obciążenia.

Otwórz aplikację w przeglądarce i przejdź do problematycznych stron lub składników.

Rozpocznij zbieranie metryk przez 60 sekund, wywołując interfejs API JavaScript collectMetrics.

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

Wywołaj powyższy interfejs API z konsoli narzędzi deweloperskich przeglądarki lub kodu JavaScript aplikacji.

Po wstępnie zdefiniowanym okresie przeglądarka pobiera .nettrace plik do folderu lokalnego, zazwyczaj Downloads folderu w systemie Windows. Aby wyświetlić .nettrace plik, użyj programu Visual Studio lub PrefView.

Aby uzyskać więcej informacji, zobacz Śledzenie aplikacji .NET przy użyciu interfejsu EventPipe.

Właściwości programu MSBuild, które umożliwiają integrację diagnostyczną

Majątek Wartość domyślna Ustaw wartość na... Opis
<EnableDiagnostics> false true Umożliwia obsługę funkcji śledzenia wydajności zestawu WebAssembly.
<WasmPerformanceInstrumentation> Brak wartości Zobacz tabelę† Umożliwia instrumentację niezbędną dla profilera próbkowania. Właściwość jest zgodna ze składnią callspec . †W przypadku dopuszczalnych wartości, zobacz poniższą tabelę.
<MetricsSupport> false true Włącza obsługę System.Diagnostics.Metrics. Aby uzyskać więcej informacji, zobacz System.Diagnostics.Metrics przestrzeń nazw.
<EventSourceSupport> false true Włącza obsługę EventPipe. Aby uzyskać więcej informacji, zobacz Diagnostyka i instrumentacja: Możliwość obserwowania i telemetria.

W poniższej tabeli opisano dopuszczalne <WasmPerformanceInstrumentation> wartości.

<WasmPerformanceInstrumentation> wartość Opis
all Wszystkie zestawy
program Zestaw punktu wejścia
{ASSEMBLY} Określa zestaw ({ASSEMBLY})
M:Type:{METHOD} Określa metodę ({METHOD})
N:{NAMESPACE} Określa przestrzeń nazw ({NAMESPACE})
T:{TYPE} Określa typ ({TYPE})
+EXPR Zawiera wyrażenie
-EXPR Wyklucza wyrażenie

Kod powinien często ustępować głównej pętli przeglądarki, aby umożliwić zbieranie danych śladowych. Podczas wykonywania długotrwałych pętli wewnętrzne bufory diagnostyczne mogą się przepełnić.

Ostrzeżenie

Włączenie profilowania i narzędzi diagnostycznych ma negatywny wpływ na rozmiar i wydajność, dlatego nie należy publikować aplikacji dla środowiska produkcyjnego z włączonymi profilerami.

Dodatkowe zasoby