Udostępnij za pośrednictwem


Aktywność

W tym temacie opisano ślady aktywności w modelu śledzenia programu Windows Communication Foundation (WCF). Działania to jednostki przetwarzania, które ułatwiają użytkownikowi zawężenie zakresu awarii. Błędy występujące w tym samym działaniu są bezpośrednio powiązane. Na przykład operacja kończy się niepowodzeniem, ponieważ odszyfrowywanie komunikatów nie powiodło się. Ślady zarówno operacji, jak i niepowodzenia odszyfrowywania komunikatów są wyświetlane w tym samym działaniu, co pokazuje bezpośrednią korelację między błędem odszyfrowywania a błędem żądania.

Konfigurowanie śledzenia działań

Program WCF udostępnia wstępnie zdefiniowane działania do przetwarzania aplikacji (zobacz Lista działań). Można również programowo definiować działania w celu grupowania śladów użytkowników. Aby uzyskać więcej informacji, zobacz Emitowanie śladów kodu użytkownika.

Aby emitować ślady działań w czasie wykonywania, użyj ActivityTracing ustawienia dla System.ServiceModel źródła śledzenia lub innych źródeł śledzenia programu WCF lub niestandardowych źródeł śledzenia, jak pokazano w poniższym kodzie konfiguracji.

<source name="System.ServiceModel" switchValue="Verbose,ActivityTracing">  

Aby dowiedzieć się więcej na temat używanego elementu konfiguracji i atrybutów, zobacz temat Konfigurowanie śledzenia .

Wyświetlanie działań

Działania i ich narzędzie można wyświetlić w narzędziu Service Trace Viewer Tool (SvcTraceViewer.exe). Gdy funkcja ActivityTracing jest włączona, to narzędzie pobiera ślady i sortuje je na podstawie działania. Można również zobaczyć transfery śledzenia. Transfer śledzenia wskazuje, jak różne działania są ze sobą powiązane. Widać, że określone działanie spowodowało uruchomienie innego działania. Na przykład żądanie wiadomości uruchomiło uzgadnianie zabezpieczeń w celu uzyskania tokenu bezpiecznej konwersacji.

Korelowanie działań w podglądzie śledzenia usługi

Narzędzie Service Trace Viewer udostępnia dwa widoki działań:

  • Widok listy , w którym identyfikator działania jest używany do bezpośredniego korelowania śladów między procesami. Ślady z różnych procesów, na przykład klienta i usługi, ale z tym samym identyfikatorem działania są grupowane w tym samym działaniu. W związku z tym błąd występujący w usłudze, który następnie powoduje wystąpienie błędu na kliencie, zostanie wyświetlony w tym samym widoku działania w narzędziu.

  • Widok grafu , w którym działania są grupowane według procesów. W tym widoku klient i usługa o tym samym identyfikatorze działania mają swoje ślady w różnych działaniach. Aby skorelować działania z tym samym identyfikatorem działania w różnych procesach, narzędzie wyświetla przepływy komunikatów w powiązanych działaniach.

Aby uzyskać więcej informacji i wyświetlić graficzny widok narzędzia podglądu śledzenia usługi, zobacz Narzędzie podglądu śledzenia usług (SvcTraceViewer.exe) i Używanie Podglądu śledzenia usługi do wyświetlania skorelowanych śladów i rozwiązywania problemów.

Definiowanie zakresu działania

Działanie jest definiowane w czasie projektowania i określa jednostkę logiczną pracy. Emitowane ślady z tym samym identyfikatorem działania są bezpośrednio powiązane, są częścią tego samego działania. Ponieważ działanie może przekraczać granice punktów końcowych (żądanie), definiowane są dwa zakresy działania.

  • Global zakres, na aplikację. W tym zakresie działanie jest identyfikowane przez 128-bitowy globalny identyfikator działania, gAId. Identyfikator gAid jest propagowany między punktami końcowymi.

  • Local zakres, na punkt końcowy. W tym zakresie działanie jest identyfikowane przez jego identyfikator gAId wraz z nazwą źródła śledzenia emitujące ślady działania i identyfikator procesu. Ten potrójny stanowi identyfikator działania lokalnego, lAId. Identyfikator lAId służy do definiowania (lokalnych) granic działania.

Schemat śledzenia

Ślady mogą być emitowane przy użyciu dowolnego schematu i na różnych platformach firmy Microsoft. "e2e" (dla "End to End") jest często używanym schematem. Ten schemat zawiera identyfikator 128-bitowy (gAId), nazwę źródła śledzenia i identyfikator procesu. W kodzie XmlWriterTraceListener zarządzanym emituje ślady w schemacie E2E.

Deweloperzy mogą ustawić pomoc emitowaną za pomocą śledzenia, ustawiając ActivityId właściwość za pomocą identyfikatora GUID w magazynie lokalnym wątku (TLS). W poniższym przykładzie pokazano to.

// set the current Activity ID to a new GUID.  
CorrelationManager.ActivityId = Guid.NewGuid();  

Ustawienie identyfikatora gAId w protokole TLS będzie widoczne, gdy ślady są emitowane przy użyciu źródła śledzenia, jak pokazano w poniższym przykładzie.

TraceSource traceSource = new TraceSource("myTraceSource");  
traceSource.TraceEvent(TraceEventType.Warning, eventId, "Information");  

Emitowany ślad będzie zawierać identyfikator gAId obecnie w protokole TLS, nazwę źródła śledzenia przekazaną jako parametr konstruktora źródła śledzenia i identyfikator bieżącego procesu.

Okres istnienia działania

W najbardziej rygorystycznych kategoriach dowód działania rozpoczyna się po raz pierwszy identyfikator działania jest używany w emitowanego śladu i kończy ostatni raz, gdy jest używany w emitowanego śladu. Wstępnie zdefiniowany zestaw typów śledzenia jest dostarczany przez System.Diagnosticsprogram , w tym uruchamianie i zatrzymywanie, aby jawnie oznaczyć granice okresu istnienia działania.

  • Początek: wskazuje początek działania. Ślad "Start" zawiera rekord rozpoczęcia nowego punktu kontrolnego przetwarzania. Zawiera on nowy identyfikator działania dla danego źródła śledzenia w danym procesie, z wyjątkiem sytuacji, gdy identyfikator działania jest propagowany w punktach końcowych, w tym przypadku widzimy jeden "Start" dla każdego punktu końcowego. Przykłady uruchamiania nowego działania obejmują tworzenie nowego wątku do przetwarzania lub wprowadzanie nowej metody publicznej.

  • Zatrzymaj: wskazuje koniec działania. Ślad "Zatrzymaj" zawiera rekord zakończenia istniejącego punktu kontrolnego przetwarzania. Zawiera on istniejący identyfikator działania dla danego źródła śledzenia w danym procesie, z wyjątkiem sytuacji, gdy identyfikator działania jest propagowany między punktami końcowymi, w tym przypadku widzimy jeden "Zatrzymaj" na punkt końcowy. Przykłady zatrzymania działania obejmują zakończenie wątku przetwarzania lub zakończenie metody, której początek został oznaczony śladem "Start".

  • Wstrzymanie: wskazuje zawieszenie przetwarzania działania. Ślad "Wstrzymaj" zawiera istniejący identyfikator działania, którego przetwarzanie ma zostać wznowione w późniejszym czasie. Żadne ślady nie są emitowane z tym identyfikatorem między zdarzeniami wstrzymania i wznowienia z bieżącego źródła śledzenia. Przykłady obejmują wstrzymanie działania podczas wywoływania funkcji biblioteki zewnętrznej lub oczekiwania na zasób, taki jak port uzupełniania we/wy.

  • Wznów: wskazuje wznowienie przetwarzania działania. Ślad "Wznów" zawiera istniejący identyfikator działania, którego ostatnio emitowany ślad z bieżącego źródła śledzenia był śladem "Wstrzymaj". Przykłady obejmują powrót z wywołania do funkcji biblioteki zewnętrznej lub sygnał w celu wznowienia przetwarzania przez zasób, taki jak port uzupełniania we/wy.

  • Transfer: ponieważ niektóre działania są spowodowane przez inne lub odnoszą się do innych, działania mogą być powiązane z innymi działaniami za pomocą śladów "Transfer". Transfer rejestruje skierowaną relację jednego działania z innym

Śledzenie uruchamiania i zatrzymywania nie ma krytycznego dla korelacji. Mogą one jednak pomóc w zwiększeniu wydajności, profilowania i walidacji zakresu działań.

Za pomocą tych typów narzędzia mogą zoptymalizować nawigowanie po dziennikach śledzenia w celu znalezienia natychmiast powiązanych zdarzeń tego samego działania lub zdarzeń w powiązanych działaniach, jeśli narzędzie śledzi ślady transferu. Na przykład narzędzia przestaną analizować dzienniki dla danego działania po wyświetleniu śledzenia uruchamiania/zatrzymywania.

Te typy śledzenia mogą być również używane do profilowania. Zasoby używane między znacznikami uruchamiania i zatrzymywania reprezentują czas inkluzywny działania, w tym zawarte działania logiczne. Odejmowanie interwałów czasu między śladami wstrzymania i wznawiania zapewnia rzeczywisty czas działania.

Śledzenie zatrzymania jest również szczególnie przydatne do weryfikowania zakresu wdrożonych działań. Jeśli niektóre ślady przetwarzania pojawiają się po zatrzymaniu śledzenia zamiast wewnątrz danego działania, może to sugerować usterkę kodu.

Wskazówki dotyczące korzystania ze śledzenia działań

Poniżej przedstawiono wytyczne dotyczące używania śladów ActivityTracing (Start, Stop, Suspend, Resume i Transfer).

  • Śledzenie jest skierowanym cyklicznym grafem, a nie drzewem. Możesz wrócić kontrolę do działania, które wywołało działanie.

  • Działanie określa granicę przetwarzania, która może być zrozumiała dla administratora systemu lub w celu zapewnienia obsługi.

  • Każda metoda WCF, zarówno na kliencie, jak i serwerze, jest powiązana przez rozpoczęcie nowego działania, a następnie (po zakończeniu pracy) zakończenie nowego działania i powrót do działania otoczenia.

  • Długotrwałe (trwające) działania, takie jak nasłuchiwanie połączeń lub oczekiwanie na komunikaty są reprezentowane przez odpowiednie znaczniki uruchamiania/zatrzymywania.

  • Działania wyzwalane przez potwierdzenie lub przetwarzanie komunikatu są reprezentowane przez granice śledzenia.

  • Działania reprezentują działania, a niekoniecznie obiekty. Działanie powinno być interpretowane jako "miało to miejsce, gdy . . . (wystąpiła znacząca emisja śladowa)."

Zobacz też