<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:
- Connectez-vous à la machine de traitement des messages.
- 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
- <ph type="x-smartling-placeholder"></ph> Page de manuel de tcpdump
- <ph type="x-smartling-placeholder"></ph> Commandes TCPdump : outil de détection de réseau
- Wireshark
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
- <ph type="x-smartling-placeholder"></ph> Utilitaire jstack
- <ph type="x-smartling-placeholder"></ph> Analyser le vidage des threads: problème d'utilisation élevée du processeur
- <ph type="x-smartling-placeholder"></ph> Analyser les vidages de threads Java