Udostępnij za pośrednictwem


Rozwiązywanie problemów z profilerem usługi Application Insights dla platformy .NET

W tym artykule przedstawiono kroki rozwiązywania problemów i informacje umożliwiające korzystanie z profilera usługi Application Insights dla platformy .NET.

Czy używasz odpowiedniego punktu końcowego programu .NET Profiler?

Obecnie jedynymi regionami, które wymagają modyfikacji punktów końcowych, są platforma Azure Government i platforma Microsoft Azure obsługiwana przez firmę 21Vianet.

Ustawienia aplikacji Chmura dla instytucji rządowych USA Chmura w Chinach
ApplicationInsightsProfilerEndpoint https://profiler.monitor.azure.us https://profiler.monitor.azure.cn
ApplicationInsightsEndpoint https://dc.applicationinsights.us https://dc.applicationinsights.azure.cn

Czy aplikacja działa w odpowiedniej wersji?

Program Profiler jest obsługiwany w programie .NET Framework nowszym niż 4.6.2.

Jeśli aplikacja internetowa jest aplikacją ASP.NET Core, musi być uruchomiona w najnowszym obsługiwanym środowisku uruchomieniowym ASP.NET Core.

Czy używasz odpowiedniego planu usługi platformy Azure?

Profiler dla platformy .NET nie jest obecnie obsługiwany w planach bezpłatnej ani udostępnionej usługi App Service. Uaktualnij do jednego z podstawowych planów profilera, aby rozpocząć pracę.

Szukasz danych programu .NET Profiler w odpowiednim przedziale czasu?

Jeśli dane, które próbujesz wyświetlić, są starsze niż dwa tygodnie, spróbuj ograniczyć filtr czasu i spróbować ponownie. Ślady są usuwane po siedmiu dniach.

Czy znasz częstotliwość próbkowania i obciążenie platformy .NET Profiler?

Program .NET Profiler losowo uruchamia dwie minuty na godzinę na każdej maszynie wirtualnej hostującego aplikacje z włączonym profilerem.

Uwaga

Gdy profiler usługi Application Insights dla platformy .NET aktywnie działa i zbiera ślady, zwykle dodaje między 5% do 15% obciążenia procesora CPU i pamięci na serwerze.

Nie ma dodatkowych kosztów przechowywania danych przechwyconych przez program .NET Profiler. Dane są automatycznie usuwane po upływie 15 dni.

Czy możesz uzyskać dostęp do bramy?

Sprawdź, czy zapora lub serwery proxy nie blokują dostępu do tej strony internetowej.

Czy widzisz przekroczenia limitu czasu lub czy musisz sprawdzić, czy program .NET Profiler jest uruchomiony?

Dane profilowania są przekazywane tylko wtedy, gdy można je dołączyć do żądania, które wystąpiło podczas uruchamiania profilera. Program .NET Profiler zbiera dane przez dwie minuty co godzinę. Możesz również wyzwolić profilera, uruchamiając sesję profilowania.

Profiler zapisuje komunikaty śledzenia i zdarzenia niestandardowe do zasobu usługi Application Insights. Możesz użyć tych zdarzeń, aby zobaczyć, jak działa profiler.

Wyszukaj komunikaty śledzenia i zdarzenia niestandardowe wysyłane przez program .NET Profiler do zasobu usługi Application Insights.

  1. W zasobie usługi Application Insights wybierz pozycję Wyszukaj w górnym menu.

    Zrzut ekranu przedstawiający wybieranie przycisku Wyszukaj z zasobu usługi Application Insights.

  2. Użyj następującego ciągu wyszukiwania, aby znaleźć odpowiednie dane:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Zrzut ekranu przedstawiający wyniki wyszukiwania z wyżej wymienionego ciągu wyszukiwania.

    Powyższe wyniki wyszukiwania zawierają dwa przykłady wyszukiwań z dwóch zasobów sztucznej inteligencji:

    • Jeśli aplikacja nie odbiera żądań podczas uruchamiania profilera, komunikat wyjaśnia, że przekazywanie zostało anulowane z powodu braku działania.

    • Profiler uruchomił i wysłał zdarzenia niestandardowe, gdy wykrył żądania, które wystąpiły podczas uruchamiania profilera. ServiceProfilerSample Jeśli jest wyświetlane zdarzenie niestandardowe, oznacza to, że profil został przechwycony i jest dostępny w okienku Wydajności usługi Application Insights.

    Jeśli nie są wyświetlane żadne rekordy, profiler nie działa lub odpowiada zbyt długo. Upewnij się, że profiler jest włączony w usłudze platformy Azure.

Program .NET Profiler jest włączony, ale żadne ślady nie zostały przechwycone

Nawet jeśli profiler jest włączony, może nie przechwytywać ani przekazywać śladów, szczególnie w takich sytuacjach:

  1. Brak żądań przychodzących do aplikacji:
    Możesz ręcznie wywołać aplikację lub utworzyć test dostępności lub test obciążeniowy.

  2. Brak przychodzących danych telemetrycznych potwierdzonych przez usługę Application Insights:

  3. Ustawienie profilera dla próbkowania jest wyłączone:
    Jeśli nadal nie są dostępne żadne ślady profilera, sprawdź ustawienie Próbkowanie profilera.

    1. Otwórz blok Wydajność usługi Application Insights>.
    2. Kliknij pozycję Profiler.
    3. Kliknij przycisk Wyzwalacze.
    4. W obszarze Ustawienia wyzwalacza upewnij się, że przełącznik Próbkowanie jest włączony.
  4. Nadal nie przekazano żadnych śladów?
    Utwórz wniosek o pomoc techniczną lub poproś pomoc techniczną społeczności platformy Azure. Możesz również przesłać opinię o produkcie do społeczności opinii na temat platformy Azure.

Podwójne zliczanie w wątkach równoległych

Gdy co najmniej dwa wątki równoległe są skojarzone z żądaniem, łączna metryka czasu w przeglądarce stosu może być większa niż czas trwania żądania. W takim przypadku łączny czas wątku jest większy niż rzeczywisty czas, który upłynął.

Na przykład jeden wątek może czekać na zakończenie drugiego. Widz próbuje wykryć tę sytuację i pomija nieinteresujące oczekiwanie. W ten sposób błędy są błędne po stronie wyświetlania zbyt dużej ilości informacji, a nie pomijania informacji o krytycznym znaczeniu.

Po wyświetleniu równoległych wątków w śladach określ, które wątki oczekują, aby można było zidentyfikować ścieżkę gorącą dla żądania. Zazwyczaj wątek, który szybko przechodzi w stan oczekiwania czeka na inne wątki. Skoncentruj się na innych wątkach i ignoruj czas w wątkach oczekujących.

Rozwiązywanie problemów z profilerem platformy .NET w określonej usłudze platformy Azure

W poniższych sekcjach opisano kroki rozwiązywania problemów dotyczące korzystania z profilera w usłudze aplikacja systemu Azure lub w usługach Azure Cloud Services.

Azure App Service

Aby profiler platformy .NET działał prawidłowo, upewnij się, że:

  • Aplikacja internetowa ma włączoną usługę Application Insights z odpowiednimi ustawieniami.

  • Trwa uruchamianie zadania WebJob ApplicationInsightsProfiler3. Aby sprawdzić zadania webjob:

    1. Przejdź do kudu. W witrynie Azure Portal:

      1. W wystąpieniu usługi App Service wybierz pozycję Narzędzia zaawansowane w okienku po lewej stronie.
      2. Wybierz pozycję Idź.
    2. W górnym menu wybierz pozycję Narzędzia Pulpit nawigacyjny zadań>WebJob. Zostanie otwarte okienko Zadania WebJob .

      Jeśli aplikacja ApplicationInsightsProfiler3 nie jest wyświetlana, uruchom ponownie aplikację usługi App Service.

      Zrzut ekranu przedstawiający okienko Zadania WebJob, które wyświetla nazwę, stan i ostatnie środowisko uruchomieniowe zadań.

    3. Aby wyświetlić szczegóły zadania WebJob, w tym dziennik, wybierz link ApplicationInsightsProfiler3 . Zostanie otwarte okienko Ciągłe szczegóły zadania WebJob.

      Zrzut ekranu przedstawiający okienko Ciągłe szczegóły zadania WebJob.

Jeśli program .NET Profiler nadal nie działa, pobierz dziennik i prześlij bilet pomoc techniczna platformy Azure.

Sprawdź stronę stanu rozszerzenia lokacji usług diagnostycznych

Jeśli profiler platformy .NET został włączony za pośrednictwem okienka usługi Application Insights w portalu, jest on zarządzany przez rozszerzenie witryny usług diagnostycznych. Możesz sprawdzić stronę stanu tego rozszerzenia, przechodząc do strony https://{site-name}.scm.azurewebsites.net/DiagnosticServices.

Uwaga

Domena linku strony stanu różni się w zależności od chmury. Ta domena jest taka sama jak witryna zarządzania Kudu dla usługi App Service.

Na stronie stanu przedstawiono stan instalacji agentów programu .NET Profiler i Snapshot Debugger . Jeśli wystąpił nieoczekiwany błąd, pojawia się wraz z instrukcjami dotyczącymi jego naprawiania.

Aby uzyskać podstawowy adres URL tej strony stanu, możesz użyć witryny zarządzania Kudu dla usługi App Service:

  1. Otwórz aplikację usługi App Service w witrynie Azure Portal.
  2. Wybierz pozycję Narzędzia zaawansowane.
  3. Wybierz pozycję Idź.
  4. W lokacji zarządzania Kudu:
    1. Dołącz /DiagnosticServices do adresu URL.
    2. Wybierz Enter.

Kończy się na przykład https://<kudu-url>/DiagnosticServices.

Strona stanu jest podobna do poniższego przykładu.

Zrzut ekranu przedstawiający stronę stanu usług diagnostycznych.

Uwaga

Instalacja bez kodu profilera usługi Application Insights dla platformy .NET jest zgodna z zasadami obsługi platformy .NET Core. Aby uzyskać więcej informacji na temat obsługiwanych środowisk uruchomieniowych, zobacz Zasady pomocy technicznej platformy .NET Core.

Instalacja ręczna

Po skonfigurowaniu programu .NET Profiler aktualizacje są wprowadzane do ustawień aplikacji internetowej. W razie potrzeby można ręcznie zastosować aktualizacje.

Zbyt wiele aktywnych sesji profilowania

W usłudze aplikacja systemu Azure istnieje limit tylko jednej sesji profilowania w danym momencie. Ten limit jest wymuszany na poziomie maszyny wirtualnej we wszystkich aplikacjach i miejscach wdrożenia uruchomionych w planie usługi App Service. Ten limit dotyczy również sesji profilowania rozpoczętych za pośrednictwem narzędzia Diagnozowanie i rozwiązywanie problemów, Kudu i Application Insights Profiler dla platformy .NET.

Jeśli program .NET Profiler próbuje uruchomić sesję, gdy inny jest już uruchomiony, w dzienniku aplikacji jest rejestrowany błąd, a także ciągły dziennik zadań WebJob dla programu ApplicationInsightsProfiler3.

W dziennikach może zostać wyświetlony jeden z następujących komunikatów:

  • Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
  • Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E

Kod 0xE111005E błędu wskazuje, że nie można uruchomić sesji profilowania, ponieważ inna sesja jest już uruchomiona.

Aby uniknąć tego błędu, przenieś niektóre aplikacje internetowe do innego planu usługi App Service lub wyłącz profilera w niektórych aplikacjach. Jeśli używasz miejsc wdrożenia, pamiętaj, aby zatrzymać wszystkie nieużywane miejsca.

Błąd wdrożenia: Katalog nie jest pusty "D:\home\site\wwwroot\App_Data\jobs"

Jeśli ponownie wdrażasz aplikację internetową w zasobie usługi Web Apps z włączonym profilerem platformy .NET, może zostać wyświetlony następujący komunikat:

"Katalog nie jest pusty 'D:\home\site\wwwroot\App_Data\jobs'"

Ten błąd występuje, jeśli uruchamiasz narzędzie Web Deploy ze skryptów lub z usługi Azure Pipelines. Rozwiąż ten problem, dodając następujące parametry wdrożenia do zadania Web Deploy:

-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$'  -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'

Te parametry usuwają folder używany przez profiler usługi Application Insights dla platformy .NET i odblokuj proces ponownego wdrażania. Nie mają one wpływu na aktualnie uruchomione wystąpienie profilera.

Czy profiler usługi Application Insights dla platformy .NET jest uruchomiony?

Profiler działa jako ciągłe zadanie WebJob w aplikacji internetowej. Zasób aplikacji internetowej można otworzyć w witrynie Azure Portal. W okienku Zadania WebJob sprawdź stan applicationInsightsProfiler. Jeśli nie jest uruchomiony, otwórz pozycję Dzienniki , aby uzyskać więcej informacji.

Maszyny wirtualne i usługi Azure Cloud Services

Aby sprawdzić, czy profiler platformy .NET jest poprawnie skonfigurowany przez Diagnostyka Azure:

  1. Sprawdź, czy zawartość wdrożonej konfiguracji Diagnostyka Azure jest oczekiwana.

  2. Upewnij się, że Diagnostyka Azure przekazuje prawidłowy klucz iKey w wierszu polecenia profilera.

  3. Sprawdź plik dziennika profilera, aby sprawdzić, czy program .NET Profiler został uruchomiony, ale zwrócił błąd.

Aby sprawdzić ustawienia, które zostały użyte do skonfigurowania Diagnostyka Azure:

  1. Zaloguj się do maszyny wirtualnej.

  2. Otwórz plik dziennika w tej lokalizacji. Wersja wtyczki może być nowsza na maszynie.

    W przypadku maszyn wirtualnych:

    c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    

    W przypadku usług Azure Cloud Services:

    c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
    
  3. W pliku wyszukaj ciągWadCfg, aby znaleźć ustawienia przekazane do maszyny wirtualnej w celu skonfigurowania Diagnostyka Azure.

  4. Sprawdź, czy klucz iKey używany przez ujście profilera platformy .NET jest poprawny.

  5. Sprawdź wiersz polecenia, który uruchamia profilera. Argumenty wiersza polecenia znajdują się w następującym pliku (dysk może być c: lub d: , a katalog może być ukryty):

    W przypadku maszyn wirtualnych:

    C:\ProgramData\ApplicationInsightsProfiler\config.json
    

    W przypadku usług Azure Cloud Services:

    D:\ProgramData\ApplicationInsightsProfiler\config.json
    
  6. Upewnij się, że klucz iKey w wierszu polecenia profilera jest poprawny.

  7. Korzystając ze ścieżki znalezionej w poprzednim pliku config.json , sprawdź plik dziennika profilera o nazwie BootstrapN.log. Są w nim pokazywane następujące informacje:

    • Informacje debugowania wskazujące ustawienia używane przez profilera.
    • Komunikaty o stanie i błędach z profilera.

    Plik można znaleźć:

    W przypadku maszyn wirtualnych:

    C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    

    W przypadku usług Azure Cloud Services:

    C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
    
  8. Jeśli program .NET Profiler jest uruchomiony podczas odbierania żądań przez aplikację, zostanie wyświetlony następujący komunikat: "Działanie wykryte z elementu iKey".

  9. Po przekazaniu śladu zostanie wyświetlony następujący komunikat: "Rozpocznij przekazywanie śledzenia".

Edytowanie reguł serwera proxy sieci lub zapory

Jeśli aplikacja łączy się z Internetem za pośrednictwem serwera proxy lub zapory, może być konieczne zaktualizowanie reguł w celu komunikowania się z profilerem platformy .NET.

Adresy IP używane przez profiler usługi Application Insights dla platformy .NET znajdują się w tagu usługi Azure Monitor. Aby uzyskać więcej informacji, zobacz dokumentację tagów usługi.

Pomoc techniczna

Jeśli nadal potrzebujesz pomocy, prześlij bilet pomocy technicznej w witrynie Azure Portal. Dołącz identyfikator korelacji z komunikatu o błędzie.