Vous consultez la documentation d'Apigee Edge.
Consultez la
documentation Apigee X. en savoir plus
Cette rubrique traite des outils réseau, des outils JVM et des journaux de diagnostic que vous pouvez utiliser pour résoudre les problèmes de réseau et liés à la machine virtuelle Java dans Apigee Edge.
Utilitaire de détection de paquets TCP/IP (tcpdump)
L'outil tcpdump est un outil de détection de paquets de 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 au protocole SSL. Exemple :
- Erreurs 502 de passerelle incorrecte (provoquées en raison d'une exception EOF)
- 503 Erreurs "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 avec laquelle 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 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 ou reçus par un hôte spécifié (adresse IP) et enregistrez 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:
- Connectez-vous à la machine du processeur de messages.
- Déterminez l'adresse IP du serveur de backend (en supposant qu'il s'agit de 22.22.22.22) dont nous souhaitons capturer les paquets.
Exécutez la commande suivante pour capturer les paquets réseau pour 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 résout 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 différentes adresses IP (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 tcpdumps
Vous pouvez afficher ou analyser des tcpdumps à l'aide de la commande tcpdump ou de l'outil basé sur une IUG Wireshark.
Références
Empreinte de la mémoire
Les empreintes de la mémoire sont un instantané de la mémoire d'un processus Java. Ils contiennent des informations sur les objets et les classes Java dans le tas de mémoire au moment où l'empreinte de la mémoire est collectée. 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 qu'un 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 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 | 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'identifiant de processus de l'application Java dont le vidage de la tête doit être capturé. |
Exemple
Imaginons que le processeur de messages mp-east utilise beaucoup de mémoire ou génère des erreurs de mémoire insuffisante. Déterminez l'identifiant de processus du processeur de messages à l'aide de la commande ps sous le système d'exploitation Unix. Imaginons que la valeur soit 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 mémoire
Les empreintes de mémoire peuvent être analysées à l'aide d'Eclipse MAT (Memory Analyzer Tool) pour déterminer les éventuelles fuites de mémoire ou les objets Java conduisant à une utilisation intensive de la mémoire.
Références
Collecter une empreinte de la mémoire
Outil d'analyse de mémoire (MAT)
Empreinte de thread
Une copie de thread 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 pile". Certains threads feront partie de l'application Java en cours d'exécution, tandis que d'autres seront des threads internes JVM.
Une copie de thread révèle des informations sur chacune des activités des threads de l'application. Ces informations peuvent être très utiles pour:
- Diagnostiquez des problèmes tels que des pics de processeur, des temps de réponse lents ou des applications Java qui ne répondent pas.
- Optimiser les performances des applications et de la JVM
Générer des empreintes de thread
La copie de thread d'un processus Java peut être générée à 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 | Répertoire d'installation de Java. |
pid | correspond à l'identifiant de processus de l'application Java dont vous souhaitez capturer la copie de thread. |
filename | Correspond au nom du fichier dans lequel la copie de thread sera écrite. |
Exemple
Pour générer une copie de thread 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
Selon l'exemple ci-dessus, une copie de thread du processus serait enregistrée dans le fichier /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Analyser les empreintes de thread
Vous pouvez afficher les copies de threads dans n'importe quel éditeur de texte tel que vi (Linux) ou le Bloc-notes (Windows). Consultez la section Empreinte de thread pour en savoir plus sur les différentes sections de cette opération et pour découvrir comment interpréter ces informations.