Herramientas de diagnóstico y registros

Estás consultando la documentación de Apigee Edge.
Consulta la documentación de Apigee X.
Información

En este tema, se analizan las herramientas de red, las herramientas de JVM y los registros de diagnóstico que puedes usar para solucionar problemas relacionados con la red y la JVM en Apigee Edge.

Utilidad detector de paquetes TCP/IP (tcpdump)

La herramienta tcpdump es una herramienta de detección de paquetes de línea de comandos que te permite capturar o filtrar paquetes TCP/IP que se reciben o transfieren a través de una red. Está disponible en los sistemas operativos Linux y Unix. Puedes instalar esta utilidad usando yum de la siguiente manera:

yum install tcpdump

La herramienta tcpdump es útil para solucionar problemas relacionados con la red o SSL. Por ejemplo:

  • Errores de puerta de enlace incorrecta 502 (causados debido a una excepción de EOF)
  • Errores 503 del servicio no disponible
  • Errores del protocolo de enlace SSL

Para solucionar cualquiera de estos problemas, primero debes determinar el par de componentes entre los que se produjo el error. En el caso de Edge, puede ser uno de los siguientes pares:

  • App cliente y router
  • Router y procesador de mensajes
  • Procesador de mensajes y servidor de backend

Una vez que identifiques el par problemático de componentes, puedes capturar los paquetes de red con tcpdump en uno de estos componentes o en ambos.

Capturar paquetes enviados a un host específico o recibidos de él mediante tcpdump

Usa el siguiente comando tcpdump para capturar todos los paquetes enviados a un host específico (dirección IP) o recibidos de él y guarda la información en el archivo indicado:

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

Donde:

Parámetro Descripción
-i (interfaz) especifica la interfaz desde la que se deben capturar los paquetes. Usar el valor de “any” permite capturar paquetes de todas las interfaces.
-s (snarf/snaplen) especifica la cantidad de cada paquete que se capturará. Usar el valor de 0 (cero) te permite capturar todo el paquete.
Dirección IP es la dirección IP del host para el que queremos capturar los paquetes
Nombre del archivo es el nombre del archivo en el que se debe escribir tcpdump

Ejemplo

Supongamos que quieres capturar los paquetes entre el Message Processor y el servidor de backend:

  1. Accede a la máquina de Message Processor.
  2. Determina la dirección IP del servidor de backend (supón que es 22.22.22.22) para el que queremos capturar los paquetes.

Usa el siguiente comando para capturar los paquetes de red de un host con una dirección IP específica:

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

Si el servidor de backend se resuelve en varias direcciones IP, usa el nombre de host del servidor de backend en el comando tcpdump como se muestra a continuación:

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

Si hay varios servidores de backend con diferentes direcciones IP (22.22.22.22, 33.33.33.33 y 44.44.44.44), usa el comando tcpdump que se indica a continuación:

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

Cómo analizar los tcpdump

Puede ver o analizar los tcpdumps con el comando tcpdump o la herramienta Wireshark, basada en la GUI.

Referencias

Volcados de montón

Los volcados de montón son una instantánea de la memoria de un proceso de Java. Contienen la información sobre las clases y los objetos Java del montón en el momento en que se recopila el volcado de montón. Por lo general, son bastante grandes, desde unos 100 MB hasta unos pocos GB.

El volcado de montón es muy útil cuando un proceso de Java como Message Processor muestra lo siguiente:

  • Uso elevado de memoria
  • OutofMemoryError

Cómo generar un volcado de montón para un proceso de Java

Java ofrece una utilidad llamada jmap, que te permite generar las estadísticas de memoria o los volcados de montón de un proceso de Java en ejecución.

Usa el siguiente comando jmap para generar el volcado de montón de un proceso de Java:

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

Donde:

Parámetro Descripción
JAVA_HOME Es el directorio de instalación de Java.
filename Es el nombre del archivo en el que se escribirá el volcado de montón.
pid Es el ID del proceso de la aplicación de Java cuyo volcado de cabeza se debe capturar.

Ejemplo

Supongamos que mp-east de Message Processor tiene un uso elevado de memoria o muestra errores de OutOfMemory. Determina el ID de proceso del Message Processor mediante el comando ps en el sistema operativo Unix. Supongamos que es 24569.

Ejecuta la utilidad jmap como se indica a continuación para generar el volcado de montón:

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

Análisis de volcados de montón

Los volcados de montón se pueden analizar con Eclipse MAT (herramienta del Analizador de memoria) para determinar las posibles fugas de memoria o qué objetos Java generan un uso elevado de memoria.

Referencias

Cómo recopilar un volcado de montón

Utilidad jmap

Página man de jmap

Herramienta Analizador de memoria (MAT)


Volcados de subprocesos

Un volcado de subprocesos es una instantánea del estado de todos los subprocesos de un proceso de Java en ejecución. El estado de cada subproceso se presenta con el contenido de su pila, conocida como seguimiento de pila. Algunos de los subprocesos formarán parte de la aplicación de Java que se ejecuta, mientras que otros serán subprocesos internos de JVM.

Un volcado de subprocesos revela información sobre cada una de las actividades de subprocesos de la aplicación. Esta información puede ser muy útil para lo siguiente:

  • Diagnostica problemas como aumentos repentinos de CPU, tiempos de respuesta lentos o aplicaciones de Java que no responden
  • Optimiza el rendimiento de las aplicaciones y JVM

Cómo generar volcados de subprocesos

El volcado de subprocesos para un proceso de Java se puede generar con la utilidad jstack como se muestra a continuación:

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

Donde:

Parámetro Descripción
JAVA_HOME Es el directorio de instalación de Java.
pid Es el ID del proceso de la aplicación Java cuyo volcado de subprocesos quieres capturar.
filename Es el nombre de archivo en el que se escribirá el volcado de subprocesos.

Ejemplo

Para generar un volcado de subprocesos para el ID de proceso 37320 en el procesador de mensajes mp-east, usa el siguiente comando:

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

Según el ejemplo anterior, el volcado de subprocesos del proceso se guardaría en el archivo /opt/apigee/edge-message-processor/mp-east-threadDump.txt.

Cómo analizar volcados de subprocesos

Puedes ver volcados de subprocesos en cualquier editor de texto, como Vi (Linux) o Bloc de notas (Windows). Consulta Volcado de subprocesos para obtener detalles sobre sus diferentes secciones y cómo interpretar la información.

Referencias