Outils de diagnostic et journaux

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Cette rubrique traite des outils réseau et JVM, ainsi que des journaux de diagnostic que vous pouvez utiliser pour résoudre les problèmes de réseau et de JVM sur Apigee Edge.

Un utilitaire de détection de paquets TCP/IP (tcpdump)

tcpdump est un outil de détection de paquets en ligne de commande qui vous permet capturer ou 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 en utilisant yum en tant que ce qui suit:

yum install tcpdump

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

  • 502 Bad Gateway Error (Erreurs de passerelle incorrectes (provoquées en raison d'une exception EOF))
  • Erreurs 503 Service non disponible
  • Échecs de handshake SSL

Pour résoudre l'un de ces problèmes, vous devez d'abord déterminer la paire de composants entre où 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 en utilisant tcpdump sur l'un de ces composants ou les deux.

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

Utilisez la commande tcpdump suivante pour capturer tous les paquets envoyés vers ou reçus par un l'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. En utilisant la valeur de « any » permet de capturer des paquets de toutes les interfaces.
-s (snarf/snaplen) spécifie la quantité de chaque paquet à capturer. Utiliser 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 dans

Exemple

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

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

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

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

Si le serveur backend est associé à plusieurs adresses IP, utilisez le nom d'hôte du 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), puis 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 tcpdumps

Vous pouvez afficher ou analyser tcpdumps à l'aide de la commande tcpdump ou de l'outil basé sur l'IUG Wireshark.

Références

Empreinte de la mémoire

Les empreintes de mémoire sont un instantané de la mémoire d'un processus Java. Ils contiennent le paramètre des informations sur les objets et classes Java dans le tas de mémoire au moment où l'empreinte est collectées. Ils sont généralement assez volumineux, allant de quelques 100 Mo à quelques Go.

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

  • 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 la mémoire les statistiques ou les empreintes de 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 Nom du fichier dans lequel l'empreinte de la mémoire sera écrite
pid Est l'identifiant de processus de l'application Java dont le vidage principal doit être capturé.

Exemple

Imaginons que le processeur de messages mp-east utilise beaucoup de mémoire ou génère Erreurs de mémoire insuffisante. Déterminer l'identifiant de processus du processeur de messages à l'aide de la commande ps sur le système d’exploitation Unix. Imaginons 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 des empreintes de la mémoire

Vous pouvez analyser les empreintes de la mémoire à l'aide d'Eclipse MAT (Memory Analyzer Tool) pour déterminer des fuites de mémoire potentielles ou quels objets Java entraînent une utilisation élevée de la mémoire.

Références

<ph type="x-smartling-placeholder"></ph> Collecter une empreinte de la mémoire

<ph type="x-smartling-placeholder"></ph> utilitaire jmap

<ph type="x-smartling-placeholder"></ph> page de manuel jmap

<ph type="x-smartling-placeholder"></ph> Outil d'analyse de mémoire (MAT)


Vidages de threads

Une copie de thread est un instantané de l'état de tous les threads d'un processus Java en cours d'exécution. La l'état de chaque thread est présenté avec le contenu de sa pile, appelé trace de la pile. Certains threads feront partie de l'application Java en cours d'exécution, tandis que d'autres seront Threads internes JVM.

Une copie de thread affiche des informations sur chacune des activités des threads de l'application. Ces informations peuvent être très utiles pour:

  • Diagnostiquer les problèmes tels que les pics de processeur, les temps de réponse lents ou le Java qui ne répond pas applications
  • Optimiser les performances des applications et de la JVM

Générer des vidages de thread

Le vidage de thread pour un processus Java peut être généré à l'aide de l'utilitaire jstack, comme indiqué ci-dessous. 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 Il s'agit de l'identifiant de processus de l'application Java dont vous souhaitez capturer le vidage de thread.
filename Nom du fichier dans lequel le vidage du thread sera écrit.

Exemple

Pour générer une copie de thread pour l'ID de processus 37320 sur le processeur de messages mp-east, exécutez la commande suivante:

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

Comme dans l'exemple ci-dessus, le vidage du thread du processus serait enregistré dans le /opt/apigee/edge-message-processor/mp-east-threadDump.txt.

Analyser les vidages de thread

Vous pouvez afficher les fichiers de dump dans un éditeur de texte tel que vi (Linux) ou le bloc-notes (Windows). Reportez-vous à Thread Dump pour en savoir plus sur les différentes sections de l'opération et sur l'interprétation des des informations.

Références