Herramientas de diagnóstico y registros

Estás viendo la documentación de Apigee Edge.
Ve a la Documentación de Apigee X.
información

Aquí se analizan las herramientas de red, las herramientas de JVM y los registros de diagnóstico que puedes usar para solucionar problemas de red y JVM en Apigee Edge.

Utilidad Sniffer de paquetes TCP/IP (tcpdump)

tcpdump es una herramienta de detección de paquetes de línea de comandos que te permite realizar las siguientes acciones: capturar o filtrar paquetes TCP/IP que se reciben o transfieren a través de una red Está disponible en sistemas operativos basados en Linux/Unix. Puedes instalar esta utilidad usando yum como sigue:

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 de servicio no disponible
  • Fallas del protocolo de enlace SSL

Para solucionar cualquiera de estos problemas, primero debes determinar el par de componentes cuál es 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 backend

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

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

Usa el siguiente comando tcpdump para capturar todos los paquetes enviados o recibidos de un host especificado (dirección IP) y guarda la información en el archivo especificado:

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

Aquí:

Parámetro Descripción
−i (interfaz) especifica la interfaz desde la que se deben capturar los paquetes. Usando el valor de “any” permite capturar paquetes de todas las interfaces.
-s (snarf/Snaplen) especifica la cantidad de cada paquete que se capturará. Usa 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 deseas capturar los paquetes entre Message Processor y Backend Servidor:

  1. Accede a la máquina del procesador de mensajes.
  2. Determinar la dirección IP del servidor backend (suponer que es 22.22.22.22) para el que queremos para capturar los paquetes.

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

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 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 aparece 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

Analiza tcpdumps

Puedes ver o analizar tcpdumps mediante el comando tcpdump o la herramienta basada en GUI Wireshark.

Referencias

Volcados de montón

Los volcados de montón son un resumen de la memoria de un proceso de Java. Contienen el elemento información sobre los objetos y las clases de Java en el montón en el momento en que se realiza el de los datos recopilados. Suelen ser bastante grandes y tienen un tamaño que oscila entre unos pocos 100 MB y pocos GB.

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

  • Alto uso de la memoria
  • OutofMemoryError

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

Java ofrece una utilidad llamada jmap que te permite generar la memoria de estadísticas o 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>

Aquí:

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 de proceso de la aplicación de Java cuyo volcado principal se debe capturar.

Ejemplo

Supongamos que Message Processor mp-east tiene un uso elevado de memoria o arroja Errores de OutOfMemory. Determina el ID del proceso del procesador de mensajes mediante el comando ps en Sistema operativo Unix. Supongamos que es 24,569.

Para generar el volcado de montón, ejecuta la utilidad jmap como se indica a continuació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 el MAT (herramienta de análisis de memoria) de Eclipse para determinar la posibles fugas de memoria o qué objetos Java están generando un uso elevado de la memoria.

Referencias

Cómo recopilar un volcado de montón

utilidad jmap

página del manual de jmap

Herramienta de analizador de memoria (MAT)


Volcado de hilos

Un volcado de subprocesos es un resumen 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 la pila, lo que se conoce como seguimiento de pila. Algunos subprocesos formarán parte de la aplicación de Java que se está ejecutando, mientras que otros formarán parte de la aplicación de Java que se está ejecutando. 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 la falta de respuesta de Java aplicaciones
  • 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 a continuación:

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

Aquí:

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

Ejemplo

Generar un volcado de subprocesos para el ID de proceso 37320 en Message Processor 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 /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 hilo para obtener detalles sobre las diferentes secciones del volcado de hilo y cómo interpretar la información.

Referencias