Outils de diagnostic et journaux

Vous consultez la documentation Apigee Edge.
Accédez à la documentation**Apigee X**.
info

Cet article présente les outils réseau, les outils JVM et les journaux de diagnostic que vous pouvez utiliser pour résoudre les problèmes liés au réseau et à la JVM sur Apigee Edge.

Utilitaire de capture de paquets TCP/IP (tcpdump)

L'outil tcpdump est un outil de capture de paquets en ligne de commande qui vous permet de capturer ou de filtrer les paquets TCP/IP reçus ou transférés sur un réseau. Il est disponible sur les systèmes d'exploitation Linux/Unix. Vous pouvez installer cet utilitaire à l'aide de yum comme suit :

yum install tcpdump

L'outil tcpdump est utile pour résoudre les problèmes liés au réseau ou à SSL. Exemple :

  • Erreurs 502 : passerelle incorrecte (dues à une exception EOF)
  • Erreurs 503 : service indisponible
  • Échecs de handshake SSL

Pour résoudre l'un de ces problèmes, vous devez d'abord déterminer la paire de composants entre lesquels l'erreur s'est produite. Dans le cas d'Edge, il peut s'agir de l'une des paires suivantes :

  • Application cliente et routeur
  • Routeur et processeur de messages
  • Processeur de messages et serveur backend

Une fois que vous avez identifié la paire de composants problématique, vous pouvez capturer les paquets réseau à l'aide de tcpdump sur l'un de ces composants ou sur les deux.

Capturer les paquets envoyés à/reçus d'un hôte spécifique à l'aide de tcpdump

Utilisez la commande tcpdump suivante pour capturer tous les paquets envoyés à ou reçus d'un hôte spécifié (adresse IP) et enregistrer les informations dans le fichier spécifié :

tcpdump -i any -s 0 host <IP address> -w <File name>

Où :

Paramètre Description
-i (interface) spécifie l'interface à partir de laquelle les paquets doivent être capturés. L'utilisation de la valeur "any" permet de capturer les paquets de toutes les interfaces.
-s (snarf/snaplen) spécifie la quantité de chaque paquet à capturer. L'utilisation de la valeur 0 (zéro) vous permet de capturer l'intégralité du paquet.
Adresse IP est l'adresse IP de l'hôte pour lequel nous voulons capturer les paquets.
Nom du fichier est le nom du fichier dans lequel tcpdump doit être écrit.

Exemple

Supposons que vous souhaitiez capturer les paquets entre le processeur de messages et le serveur backend :

  1. Connectez-vous à la machine du processeur de messages.
  2. Déterminez l'adresse IP du serveur backend (supposons qu'il s'agisse de 22.22.22.22) pour lequel nous voulons capturer les paquets.

Utilisez la commande suivante pour capturer les paquets réseau d'un hôte avec une adresse IP spécifique :

tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap

Si le serveur backend est résolu en plusieurs adresses IP, utilisez le nom d'hôte du serveur backend dans la commande tcpdump, comme indiqué ci-dessous :

tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap

S'il existe plusieurs serveurs backend avec des adresses IP différentes (22.22.22.22, 33.33.33.33 et 44.44.44.44), utilisez la commande tcpdump ci-dessous :

tcpdump -i any -s 0 host 22.22.22.22 or host 33.33.33.33 or host 44.44.44.44 -w rmp-123.pcap

Analyser les tcpdumps

Vous pouvez afficher ou analyser les tcpdumps à l'aide de la commande tcpdump ou de l'outil graphique Wireshark.

Références

Empreintes de la mémoire

Les empreintes de la mémoire sont un instantané de la mémoire d'un processus Java. Elles contiennent des informations sur les objets et les classes Java dans le tas au moment où l'empreinte de la mémoire est collectée. Leur taille est généralement assez importante, allant de quelques centaines de mégaoctets à quelques gigaoctets.

L'empreinte de la mémoire est très utile lorsqu'un processus Java tel que le processeur de messages affiche :

  • Une utilisation élevée de la mémoire
  • OutofMemoryError

Générer une empreinte de la mémoire pour un processus Java

Java fournit un utilitaire appelé jmap, qui vous permet de générer les statistiques de mémoire ou les empreintes de la mémoire d'un processus Java en cours d'exécution.

Utilisez la commande jmap suivante pour générer l'empreinte de la mémoire d'un processus Java :

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>

Où :

Paramètre Description
JAVA_HOME est le répertoire d'installation de Java.
filename est le nom du fichier dans lequel l'empreinte de la mémoire sera écrite.
pid est l'ID de processus de l'application Java dont l'empreinte de la mémoire doit être capturée.

Exemple

Supposons que le processeur de messages mp-east présente une utilisation élevée de la mémoire ou génère des erreurs OutOfMemoryError. Déterminez l'ID de processus du processeur de messages à l'aide de la commande ps sur le système d'exploitation Unix. Supposons qu'il s'agisse de 24569.

Exécutez l'utilitaire jmap comme suit pour générer l'empreinte de la mémoire :

sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569

Analyser les empreintes de la mémoire

Les empreintes de la mémoire peuvent être analysées à l'aide d'Eclipse MAT (Memory Analyzer Tool) pour déterminer les fuites de mémoire potentielles ou les objets Java qui entraînent une utilisation élevée de la mémoire.

Références

Collecter une empreinte de la mémoire

Utilitaire jmap

Consultez la page de manuel sur jmap.

Outil d'analyse de la mémoire (MAT)


Instantanés des threads

Un instantané des threads est un instantané de l'état de tous les threads d'un processus Java en cours d'exécution. L'état de chaque thread est présenté avec le contenu de sa pile, appelé trace de la pile. Certains threads font partie de l'application Java en cours d'exécution, tandis que d'autres sont des threads internes à la JVM.

Un instantané des threads révèle des informations sur les activités de chaque thread de l'application. Ces informations peuvent être très utiles pour :

  • Diagnostiquer des problèmes tels que des pics d'utilisation du processeur, des temps de réponse lents ou des applications Java qui ne répondent pas
  • Optimiser les performances de l'application et de la JVM

Générer des instantanés des threads

L'instantané des threads d'un processus Java peut être généré à l'aide de l'utilitaire jstack, comme indiqué ci-dessous :

sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>

Où :

Paramètre Description
JAVA_HOME est le répertoire d'installation de Java.
pid est l'ID de processus de l'application Java dont vous souhaitez capturer l'instantané des threads.
filename est le nom du fichier dans lequel l'instantané des threads sera écrit.

Exemple

Pour générer un instantané des threads pour l'ID de processus 37320 sur le processeur de messages mp-east, utilisez la commande suivante :

sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt

Conformément à l'exemple ci-dessus, l'instantané des threads du processus est enregistré dans le fichier /opt/apigee/edge-message-processor/mp-east-threadDump.txt.

Analyser les instantanés des threads

Vous pouvez afficher les instantanés des threads dans n'importe quel éditeur de texte, tel que vi (Linux) ou Notepad (Windows). Pour en savoir plus sur les différentes sections d'un instantané des threads et sur la façon d'interpréter les informations, consultez Instantané des threads.

Références