Freigeben über


Beheben von Netzwerkproblemen

In diesem Artikel werden einige Tools beschrieben, mit denen Netzwerkprobleme verschiedener Komplexitäten diagnostiziert werden können. Zu diesen Problemen gehören Szenarien, die von der Behandlung eines unerwarteten Antwortwerts von einem Dienst bis zum Ermitteln der Grundursache einer Ausnahme durch eine geschlossene Verbindung reichen.

Für die clientseitige Problembehandlung bieten die Azure-Clientbibliotheken für Java einen konsistenten und robusten Protokollierungsverlauf, wie in Konfigurieren der Protokollierung im Azure SDK für Javabeschrieben. Die Clientbibliotheken führen jedoch Netzwerkaufrufe über verschiedene Protokolle durch, was zu Problembehandlungsszenarien führen kann, die sich außerhalb des bereitgestellten Problembehandlungsbereichs erstrecken. Wenn diese Probleme auftreten, besteht die Lösung darin, die in diesem Artikel beschriebenen externen Tools zu verwenden, um Netzwerkprobleme zu diagnostizieren.

Geigenspieler

Fiddler ist ein HTTP-Debugproxy, der es ermöglicht, dass Anforderungen und Antworten, die durch ihn geleitet werden, unverändert zu protokollieren. Die rohen Anforderungen und Antworten, die Sie erfassen, können Ihnen helfen, Szenarien zu behandeln, in denen der Dienst eine unerwartete Anforderung erhält, oder der Client erhält eine unerwartete Antwort. Um Fiddler zu verwenden, müssen Sie die Clientbibliothek mit einem HTTP-Proxy konfigurieren. Wenn Sie HTTPS verwenden, benötigen Sie zusätzliche Konfiguration, um die entschlüsselten Anforderungs- und Antworttexte zu überprüfen.

Hinzufügen eines HTTP-Proxys

Um einen HTTP-Proxy hinzuzufügen, befolgen Sie die Anweisungen in Konfigurieren von Proxys im Azure SDK für Java. Stellen Sie sicher, dass Sie die Fiddler-Standardadresse für localhost an Port 8888 verwenden.

Aktivieren der HTTPS-Entschlüsselung

Standardmäßig kann Fiddler nur HTTP-Datenverkehr erfassen. Wenn Ihre Anwendung HTTPS verwendet, müssen Sie zusätzliche Schritte ausführen, um dem Zertifikat von Fiddler zu vertrauen, damit er HTTPS-Datenverkehr erfassen kann. Weitere Informationen finden Sie unter HTTPS-Menü in der Fiddler-Dokumentation.

Die folgenden Schritte zeigen, wie Sie dem Zertifikat mithilfe der Java-Runtime-Umgebung (JRE) vertrauen. Wenn das Zertifikat nicht vertrauenswürdig ist, schlägt möglicherweise eine HTTPS-Anforderung über Fiddler mit Sicherheitswarnungen fehl.

  1. Exportieren Sie das Zertifikat von Fiddler.

  2. Suchen Sie das JrE-Schlüsseltool (in der Regel in jre/bin).

  3. Suchen Sie das Cacert des JRE (normalerweise unter jre/lib/security).

  4. Öffnen Sie ein Bash-Fenster, und verwenden Sie den folgenden Befehl, um das Zertifikat zu importieren:

    sudo keytool -import -file <location-of-Fiddler-certificate> -keystore <location-of-cacert> -alias Fiddler
    
  5. Geben Sie ein Kennwort ein.

  6. Vertrauen Sie dem Zertifikat.

Wireshark

Wireshark ist ein Netzwerkprotokollanalysator, der Netzwerkdatenverkehr erfassen kann, ohne Dass Änderungen am Anwendungscode erforderlich sind. Wireshark ist hochgradig konfigurierbar und kann von allgemeinem bis hin zu spezifischem, niedrigstufigem Netzwerkverkehr erfassen. Diese Funktion ist nützlich für die Fehlerbehebung bei Szenarien, wie dem Schließen einer Verbindung durch einen Remotehost oder dem Schließen von Verbindungen während eines Vorgangs. Die Wireshark-GUI zeigt Aufzeichnungen mithilfe eines Farbschemas an, das eindeutige Erfassungsfälle identifiziert, z. B. eine TCP-Neuübertragung, RST usw. Sie können Aufzeichnungen auch entweder zum Zeitpunkt der Erfassung oder während der Analyse filtern.

Konfigurieren eines Aufnahmefilters

Die Erfassungsfilter reduzieren die Anzahl der Netzwerkaufrufe, die für die Analyse erfasst werden. Ohne Erfassungsfilter erfasst Wireshark den gesamten Datenverkehr, der über eine Netzwerkschnittstelle durchläuft. Dieses Verhalten kann riesige Datenmengen erzeugen, bei denen der größte Teil für die Untersuchung Rauschen sein kann. Die Verwendung eines Aufzeichnungsfilters hilft dabei, den Datenverkehr präventiv einzugrenzen, der aufgezeichnet wird, um so eine Untersuchung zielgerichtet zu gestalten. Weitere Informationen finden Sie unter Erfassen von Live-Netzwerkdaten in der Wireshark-Dokumentation.

Im folgenden Beispiel wird ein Erfassungsfilter hinzugefügt, um netzwerkdatenverkehr zu erfassen, der an einen bestimmten Host gesendet oder empfangen wird.

Navigieren Sie in WireShark zu Aufzeichnen> Aufzeichnungsfilter..., und fügen Sie einen neuen Filter mit dem Wert host <host-IP-or-hostname> hinzu. Dieser Filter erfasst nur Datenverkehr zu und von diesem Host. Wenn die Anwendung mit mehreren Hosts kommuniziert, können Sie mehrere Aufnahmefilter hinzufügen, oder Sie können die Host-IP/den Hostnamen mit dem Operator "OR" hinzufügen, um eine lockere Erfassungsfilterung bereitzustellen.

Aufzeichnen auf Datenträger

Möglicherweise müssen Sie eine Anwendung lange ausführen, um eine unerwartete Netzwerkausnahme zu reproduzieren und den Datenverkehr zu beobachten, der dazu führt. Darüber hinaus ist es möglicherweise nicht möglich, alle Aufzeichnungen im Arbeitsspeicher beizubehalten. Glücklicherweise kann Wireshark Aufzeichnungen auf dem Datenträger protokollieren, sodass sie für die Nachbearbeitung verfügbar sind. Bei diesem Ansatz wird das Risiko vermieden, dass der Arbeitsspeicher ausgeht, während Sie ein Problem reproduzieren. Weitere Informationen finden Sie unter Dateieingabe, Ausgabe und Druck in der Wireshark-Dokumentation.

Im folgenden Beispiel wird WireShark so eingerichtet, dass Aufzeichnungen in mehreren Dateien dauerhaft auf einem Datenträger gespeichert werden, wobei die Dateien entweder nach einer Aufzeichnung von 100.000 oder anhand der Größe von 50 MB aufgeteilt werden.

Navigieren Sie in WireShark zu Erfassen > Optionen, suchen Sie die Registerkarte Ausgabe, und geben Sie dann einen Dateinamen ein, der verwendet werden soll. Diese Konfiguration bewirkt, dass Wireshark Aufzeichnungen in einer einzelnen Datei beibehalten.

Wenn Sie die Aufzeichnung in mehreren Dateien aktivieren möchten, wählen Sie Neue Datei automatisch erstellen und dann Nach 100000 Paketen sowie Nach 50 MB aus. Diese Konfiguration lässt Wireshark eine neue Datei erstellen, wenn eines der Prädikate übereinstimmt. Jede neue Datei verwendet denselben Basisnamen wie der eingegebene Dateiname und fügt einen eindeutigen Bezeichner an.

Wenn Sie die Anzahl der Dateien begrenzen möchten, die WireShark erstellen kann, wählen Sie Ringpuffer mit X Dateien verwenden aus. Mit dieser Option wird wireshark auf die Protokollierung mit nur der angegebenen Anzahl von Dateien beschränkt. Wenn diese Anzahl von Dateien erreicht ist, beginnt Wireshark mit dem Überschreiben der Dateien, beginnend mit dem ältesten.

Filtern von Aufzeichnungen

Manchmal können Sie den Datenverkehr, den Wireshark erfasst, nicht eng einschränken , z. B. wenn Ihre Anwendung mit mehreren Hosts mit verschiedenen Protokollen kommuniziert. In diesem Szenario, in der Regel bei Verwendung der zuvor beschriebenen dauerhaften Aufzeichnung, ist es einfacher, die Analyse nach der Netzwerkaufzeichnung auszuführen. Wireshark unterstützt filterähnliche Syntax für die Analyse von Erfassungen. Weitere Informationen finden Sie unter Arbeiten mit aufgezeichneten Paketen in der WireShark-Dokumentation.

Im folgenden Beispiel wird eine dauerhaft gespeicherte Aufzeichnungsdatei geladen und nach ip.src_host==<IP> gefiltert.

Navigieren Sie in WireShark zu Datei> Öffnen, und laden Sie eine dauerhaft gespeicherte Aufzeichnung von dem zuvor verwendeten Dateispeicherort. Nachdem die Datei geladen wurde, wird unterhalb der Menüleiste eine Filtereingabe angezeigt. Geben Sie in der Filtereingabe ip.src_host==<IP>ein. Dieser Filter beschränkt die Erfassungsansicht so, dass nur Erfassungen angezeigt werden, bei denen die Quelle vom Host mit der IP-<IP>stammt.

Nächste Schritte

In diesem Artikel werden verschiedene Tools zum Diagnostizieren von Netzwerkproblemen beim Arbeiten mit dem Azure SDK für Java behandelt. Nachdem Sie nun mit den allgemeinen Nutzungsszenarien vertraut sind, können Sie mit der Erkundung des SDK selbst beginnen. Weitere Informationen zu den verfügbaren APIs finden Sie im Azure SDK für Java-Bibliotheken.