Verwenden von Service Trace Viewer zum Anzeigen korrelierender Ablaufverfolgungen und der Problembehandlung
In diesem Thema wird das Format von Ablaufverfolgungsdaten und ihre Verwendung beschrieben. Dabei wird auch auf die Verwendung von Service Trace Viewer zur Problembehandlung in einer Anwendung eingegangen.
Verwenden des Service Trace Viewer-Tools
Das Windows Communication Foundation (WCF) Service Trace Viewer-Tool hilft Ihnen dabei, von WCF-Listenern erstellte Diagnoseablaufverfolgungen zu korrelieren, um die Ursache eines Fehlers zu ermitteln. Anhand dieses Tools können Sie mühelos Ablaufverfolgungen anzeigen, gruppieren und filtern, um Probleme mit WCF-Diensten zu diagnostizieren, zu reparieren und zu überprüfen. Weitere Informationen über die Verwendung dieses Tools finden Sie unter Service Trace Viewer-Tool (SvcTraceViewer.exe).
Dieses Thema enthält Screenshots von Ablaufverfolgungen, die durch Ausführen des Beispiels für Ablaufverfolgung und Nachrichtenprotokollierung generiert wurden. Die Anzeige erfolgte mithilfe des Service Trace Viewer-Tool (SvcTraceViewer.exe). In diesem Thema werden der Ablaufverfolgungsinhalt, Aktivitäten und ihre Korrelation erläutert. Zudem wird beschrieben, wie eine große Zahl von Ablaufverfolgungen im Rahmen der Problembehandlung analysiert werden können.
Anzeigen von Ablaufverfolgungsinhalt
Ein Ablaufverfolgungsereignis enthält die folgenden wichtigen Informationen:
Aktivitätsname bei Festlegung
Ausgabezeit
Ablaufverfolgungsebene
Name der Ablaufverfolgungsquelle
Prozessname
Thread-ID
Einen eindeutigen Ablaufverfolgungsbezeichner. Dabei handelt es sich um eine URL, die auf ein Ziel in der Online-MSDN Library verweist, das weitere Informationen zur Ablaufverfolgung bereitstellt.
Alle diese Informationen können Sie im oberen rechten Bereich im Viewer für Dienstabläufe einsehen, oder bei Auswahl einer Ablaufverfolgung im Abschnitt Grundlegende Informationen in der formatierten Ansicht des unteren rechten Bereichs.
Hinweis: |
---|
Wenn sich der Client und der Dienst auf demselben Computer befinden, können die Ablaufverfolgungen für beide Anwendungen eingesehen werden. Diese können über die Spalte Prozessname gefiltert werden. |
Zudem bietet die formatierte Ansicht eine Beschreibung der Ablaufverfolgung sowie zusätzliche detaillierte Informationen, sofern diese verfügbar sind. Dazu gehören Ausnahmeart und -nachricht, Aufruflisten, Nachrichtenaktion, Felder Von/Zu und andere Ausnahmeinformationen.
Die XML-Ansicht enthält die folgenden nützlichen XML-Tags:
<SubType> (Ablaufverfolgungsebene)
<TimeCreated>
<Source> (Name der Ablaufverfolgungsquelle)
<Correlation> (Aktivitäts-ID, die bei Ausgabe der Ablaufverfolgung festgelegt wird)
<Execution> (Prozess- und Thread-ID)
<Computer>
<ExtendedData> einschließlich <Action>, <MessageID> und der <ActivityId>, die beim Senden einer Nachricht im Nachrichtenheader festgelegt wird
Wenn Sie die Ablaufverfolgung "Sent a message over a channel" ("Nachricht über einen Kanal gesendet") prüfen, wird möglicherweise der folgende Inhalt angezeigt.
<E2ETraceEvent xmlns="https://schemas.microsoft.com/2004/06/E2ETraceEvent">
<System xmlns="https://schemas.microsoft.com/2004/06/windows/eventlog/system">
<EventID>262163</EventID>
<Type>3</Type>
<SubType Name="Information">0</SubType>
<Level>8</Level>
<TimeCreated SystemTime="2006-08-04T18:45:30.8491051Z" />
<Source Name="System.ServiceModel" />
<Correlation ActivityID="{27c6331d-8998-43aa-a382-03239013a6bd}"/>
<Execution ProcessName="client" ProcessID="1808" ThreadID="1" />
<Channel />
<Computer>TEST1</Computer>
</System>
<ApplicationData>
<TraceData>
<DataItem>
<TraceRecord xmlns="https://schemas.microsoft.com/2004/10/E2ETraceEvent/TraceRecord" Severity="Information">
<TraceIdentifier>https://msdn.microsoft.com/en-US/library/System.ServiceModel.Channels.MessageSent.aspx</TraceIdentifier>
<Description>Sent a message over a channel.</Description>
<AppDomain>client.exe</AppDomain>
<Source>System.ServiceModel.Channels.ClientFramingDuplexSessionChannel/35191196</Source>
<ExtendedData xmlns="https://schemas.microsoft.com/2006/08/ServiceModel/MessageTransmitTraceRecord">
<MessageProperties>
<AllowOutputBatching>False</AllowOutputBatching>
</MessageProperties>
<MessageHeaders>
<Action d4p1:mustUnderstand="1" xmlns:d4p1="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.w3.org/2005/08/addressing">http://Microsoft.ServiceModel.Samples/ICalculator/Multiply</Action>
<MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:7c6670d8-4c9c-496e-b6a0-2ceb6db35338</MessageID>
<ActivityId CorrelationId="b02e2189-0816-4387-980c-dd8e306440f5" xmlns="https://schemas.microsoft.com/2004/09/ServiceModel/Diagnostics">27c6331d-8998-43aa-a382-03239013a6bd</ActivityId>
<ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo>
<To d4p1:mustUnderstand="1" xmlns:d4p1="http://www.w3.org/2003/05/soap-envelope" xmlns="http://www.w3.org/2005/08/addressing">net.tcp://localhost/servicemodelsamples/service</To>
</MessageHeaders>
<RemoteAddress>net.tcp://localhost/servicemodelsamples/service</RemoteAddress>
</ExtendedData>
</TraceRecord>
</DataItem>
</TraceData>
</ApplicationData>
</E2ETraceEvent>
ServiceModel E2E-Ablaufverfolgung
Wenn die System.ServiceModel-Ablaufverfolgungsquelle mit einem anderen switchValue als OFF und ActivityTracing festgelegt wird, erstellt WCF Aktivitäten und Übertragungen für die WCF-Verarbeitung.
Eine Aktivität ist eine logische Verarbeitungseinheit, die alle verknüpften Ablaufverfolgungen zusammenfasst. So können Sie beispielsweise eine Aktivität für jede Anforderung definieren. Übertragungen stellen eine kausale Beziehung zwischen Aktivitäten innerhalb von Endpunkten her. Durch die Weitergabe der Aktivitäts-ID können Sie Aktivitäten über Endpunkte hinweg verknüpfen. Das wird durch Festlegen von propagateActivity=true an jedem Endpunkt während der Konfiguration erreicht. Aktivitäten, Übertragungen und Weitergabe ermöglichen es Ihnen, die Fehlerkorrelation durchzuführen. Auf diese Weise können Sie die Ursache eines Fehlers schneller ermitteln.
Auf dem Client wird für jeden Objektmodellaufruf (beispielsweise Open ChannelFactory, Add, Divide usw.) eine WCF-Aktivität erstellt. Jeder der Vorgangsaufrufe wird in einer "Process Action" (Aktion verarbeiten)-Aktivität verarbeitet.
Im folgenden Screenshot, der aus dem Beispiel Ablaufverfolgung und Nachrichtenprotokollierung stammt, wird im linken Fensterbereich die nach Erstellungsdauer geordnete Liste der Aktivitäten angezeigt, die im Clientprozess erstellt wurden. Es folgt eine chronologische Liste von Aktivitäten:
Kanalfactory erstellt (ClientBase).
Kanalfactory geöffnet.
Add-Aktion (Hinzufügen) verarbeitet.
Set Up Secure Session (Sichere Sitzung einrichten) ausgeführt (nach erster Anforderung ERFOLGT) und drei Sicherheitsinfrastruktur-Antwortnachrichten verarbeitet: RST, RSTR, SCT (Process message 1, 2, 3; Nachricht 1, 2, 3 verarbeiten).
Anforderungen Subtract, Multiply und Divide (Subtrahieren, Multiplizieren und Dividieren) verarbeitet.
Kanalfactory geschlossen, dabei sichere Sitzung beendet und Sicherheitsantwort Cancel (Abbrechen) verarbeitet.
Die Sicherheitsinfrastrukturnachrichten sind aufgrund der Bindung wsHttpBinding sichtbar.
Hinweis: |
---|
In WCF werden Antwortnachrichten, die verarbeitet werden, zunächst in einer separaten Aktivität (Nachricht verarbeiten) dargestellt, bevor sie durch eine Übertragung mit der entsprechenden ProcessAction-Aktivität korreliert werden, die die Anforderungsnachricht enthält. Das geschieht sowohl für Infrastrukturnachrichten als auch für asynchrone Anforderungen, da die Nachricht geprüft, der activityId-Header gelesen und die vorhandene ProcessAction-Aktivität mit der ID ermittelt werden muss, um die Korrelation vorzunehmen. Bei synchronen Anforderungen wird die Antwort blockiert, weshalb bekannt ist, mit welcher Verarbeitungsaktion die Antwort verknüpft ist. |
Wenn Sie im linken Bereich eine Aktivität auswählen, werden die verschachtelten Aktivitäten und Ablaufverfolgungen im rechten oberen Bereich angezeigt. Dabei handelt es sich somit um eine auf der Basis der ausgewählten übergeordneten Aktivität verkürzte hierarchische Ansicht der Aktivitätenliste auf der linken Seite. Da die ausgewählte Verarbeitungsaktion Add die erste Anforderung ist, enthält diese Aktivität die Aktivität Set Up Secure Session (Übertragung nach, Rückübertragung von) sowie Ablaufverfolgungen für die eigentliche Verarbeitung der Add-Aktion.
Wenn Sie auf die Process Action Add-Aktivität im linken Fensterbereich doppelklicken, wird eine grafische Darstellung der WCF-Clientaktivitäten für die Add-Aktion angezeigt. Die erste Aktivität auf der linken Seite ist die Stammaktivität (0000), sie ist die Standardaktivität. WCF überträgt aus der Umgebungsaktivität heraus. Ist dies nicht definiert, überträgt WCF aus 0000. Im vorliegenden Fall überträgt die zweite Aktivität, die Verarbeitungsaktion Add, aus 0 heraus. Dann wird Set Up Secure Session (Sichere Sitzung einrichten) angezeigt.
Im oberen rechten Bereich sind alle Ablaufverfolgungen zu sehen, die mit der Process Action Add-Aktivität verknüpft sind. Das bedeutet, in ein und derselben Aktivität wurde die Anforderungsnachricht gesendet ("Sent a message over a channel", "Nachricht über einen Kanal gesendet") und die Antwort empfangen ("Received a message over a channel", "Nachricht über einen Kanal empfangen"). Dies wird im folgenden Diagramm dargestellt. Zur besseren Übersichtlichkeit ist die Set Up Secure Session-Aktivität im Diagramm reduziert.
Hier werden Clientablaufverfolgungen zur besseren Verdeutlichung geladen, jedoch werden Dienstablaufverfolgungen (empfangene Anforderungsnachrichten und gesendete Antwortnachrichten) in derselben Aktivität angezeigt, wenn auch sie in das Tool geladen werden und propagateActivity festgelegt wurde auf den Wert true. Dies wird in einer Abbildung weiter unten deutlich.
Im Dienst wird das Aktivitätsmodell den WCF-Begriffen wie folgt zugeordnet:
Ein ServiceHost wird erstellt und geöffnet (dadurch werden möglicherweise mehrere hostbezogene Aktivitäten erzeugt, z. B. im Falle der Sicherheit).
Es wird eine Lauschaktivität für jeden Listener im ServiceHost erstellt (mit Übertragung in und aus Open ServiceHost).
Wenn ein Listener eine Kommunikationsanforderung erkennt, die von einem Client initiiert wurde, überträgt er sie an eine "Receive Bytes"-Aktivität (Byteempfangaktivität), in der alle vom Client gesendeten Bytes verarbeitet werden. In dieser Aktivität sind alle Verbindungsfehler erkennbar, die während der Client-Dienst-Interaktion aufgetreten sind.
Jeder Satz Bytes, der empfangen wird und einer Nachricht entspricht, wird in einer "Process Message"-Aktivität ("Nachricht verarbeiten") verarbeitet, bei der das WCF-Nachrichtenobjekt erstellt wird. In dieser Aktivität sind Fehler aufgrund eines ungültigen Umschlags oder einer falsch formatierten Nachricht erkennbar.
Sobald die Nachricht erstellt wird, erfolgt die Übertragung zu einer Process Action-Aktivität. Wenn propagateActivity sowohl für den Client als auch für den Dienst auf true festgelegt ist, verfügt diese Aktivität über dieselbe ID wie die auf dem Client definierte und zuvor beschriebene. Von dieser Phase an profitieren Sie von der direkten Korrelation über Endpunkte hinweg, da alle in WCF ausgegebenen Ablaufverfolgungen, die mit der Anforderung verknüpft sind, in derselben Aktivität enthalten sind, einschließlich der Verarbeitung der Antwortnachricht.
Als prozessexterne Aktion wird eine "Execute user Code"-Aktivität ("Benutzercode ausführen") erstellt, um die in Benutzercode ausgegebenen Ablaufverfolgungen von den in WCF ausgegebenen zu isolieren. Im vorangehenden Beispiel wird die Ablaufverfolgung "Service sends Add response" ("Dienst sendet Hinzufügen-Antwort") in der "Execute User code"-Aktivität ("Benutzercode ausführen") und nicht in der vom Client weitergegebenen Aktivität ausgegeben, sofern zutreffend.
In der nachfolgenden Abbildung ist die erste Aktivität auf der linken Seite die Stammaktivität (0000), bei der es sich um die Standardaktivität handelt. Die nächsten drei Aktivitäten dienen dazu, den ServiceHost zu öffnen. Die Aktivität in Spalte 5 ist der Listener, und die übrigen Aktivitäten (6 bis 8) beschreiben die WCF-Verarbeitung einer Nachricht, von der Byteverarbeitung bis zur Benutzercodeaktivierung.
Der folgende Screenshot zeigt die Aktivitäten sowohl des Clients als auch des Diensts. Die Process Action Add-Aktivität ist orange hervorgehoben. Pfeile verknüpfen die Anforderungs- und die Antwortnachrichten, die vom Client und vom Dienst gesendet und empfangen werden. Die ProcessAction-Ablaufverfolgungen sind über Prozesse im Diagramm verteilt, werden im oberen rechten Bereich jedoch als Teil derselben Aktivität angezeigt. In diesem Bereich sind Clientablaufverfolgungen für gesendete Nachrichten gefolgt von Dienstablaufverfolgungen für empfangene und verarbeitete Nachrichten zu sehen.
Im folgenden Fehlerszenario werden Fehler- und Warnungsablaufverfolgungen im Dienst und auf dem Client verknüpft. Zunächst wird eine Ausnahme in Benutzercode für den Dienst ausgelöst (grüne Aktivität ganz rechts mit einer Warnungsablaufverfolgung für die Ausnahme "The service cannot process this request in user code", "Der Dienst kann diese Anforderung nicht in Benutzercode verarbeiten"). Beim Senden der Antwort an den Client wird erneut eine Warnungsablaufverfolgung ausgegeben, um die Fehlernachricht anzugeben (rosafarbene Aktivität links). Der Client schließt sodann seinen WCF-Client (gelbe Aktivität unten links), der die Verbindung zum Dienst abbricht. Der Dienst löst einen Fehler aus (längste rosafarbene Aktivität rechts).
Das Beispiel, das verwendet wird, um diese Ablaufverfolgungen zu generieren, ist eine Reihe von synchronen Anforderungen mit der Bindung wsHttpBinding. Abweichungen von diesem Diagramm treten bei Szenarien ohne Sicherheit oder bei asynchronen Anforderungen auf, bei denen die ProcessAction-Aktivität die Anfangs- und Endvorgänge umfasst, die den asynchronen Aufruf bilden, und Übertragungen zu einer Rückrufaktivität zeigt. Weitere Informationen über zusätzliche Szenarien finden Sie unter End-to-End-Ablaufverfolgungsszenarien.
Problembehandlung mit Service Trace Viewer
Wenn Sie Ablaufverfolgungsdateien in das Service Trace Viewer-Tool laden, können Sie jede beliebige rote oder gelbe Aktivität im linken Bereich auswählen, um die Ursache für ein Problem in Ihrer Anwendung zu ermitteln. Die Aktivität 000 verfügt i. d. R. über nicht behandelte Ausnahmen, mit denen sich der Benutzer befassen muss.
Im oberen rechten Bereich können Sie Ablaufverfolgungen für die Aktivität prüfen, die Sie auf der linken Seite ausgewählt haben. Sie können dann rote oder gelbe Ablaufverfolgungen in diesem Bereich prüfen und sehen, wie sie korrelieren. Im vorangehenden Diagramm sind Warnungsablaufverfolgungen sowohl für den Client als auch für den Dienst in derselben Process Action-Aktivität erkennbar.
Wenn diese Ablaufverfolgungen nicht auf die Ursache des Fehlers schließen lassen, können Sie auf die ausgewählte Aktivität im linken Bereich doppelklicken (hier Process Action). Das Diagramm mit den zugehörigen Aktivitäten wird dann angezeigt. Sie können die verknüpften Aktivitäten dann erweitern (durch Klicken auf die "+"-Symbole), um nach der ersten rot oder gelb ausgegebenen Ablaufverfolgung in einer verknüpften Aktivität zu suchen. Erweitern Sie nach und nach die Aktivitäten, die direkt vor der betreffenden roten oder gelben Ablaufverfolgung ausgeführt wurden, und verfolgen Sie die Übertragungen zu verknüpften Aktivitäten oder Nachrichtenflüsse über Endpunkte hinweg, bis Sie die Ursache des Problems gefunden haben.
Wenn die ServiceModel ActivityTracing deaktiviert, aber die ServiceModel-Ablaufverfolgung aktiviert ist, werden ServiceModel-Ablaufverfolgungen in der Aktivität 0000 ausgegeben. In diesem Fall ist es jedoch aufwändiger, die Korrelation dieser Ablaufverfolgungen zu verstehen.
Wenn die Nachrichtenprotokollierung aktiviert ist, können Sie auf der Registerkarte Nachricht nachsehen, welche Nachricht vom Fehler betroffen ist. Wenn Sie auf eine rote oder gelbe Nachricht doppelklicken, wird die Diagrammansicht der zugehörigen Aktivitäten angezeigt. Das sind die Aktivitäten, die am engsten mit der Anforderung verknüpft sind, bei der ein Fehler aufgetreten ist.
Siehe auch
Konzepte
End-to-End-Ablaufverfolgungsszenarien
Service Trace Viewer-Tool (SvcTraceViewer.exe)