Estás viendo la documentación de Apigee Edge.
Ir a la
documentación de Apigee X. info
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 de sniffer de paquetes TCP/IP (tcpdump)
La herramienta tcpdump es una herramienta de sniffer 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 sistemas operativos basados en Linux o Unix. Puedes instalar esta utilidad con 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 502 Puerta de enlace incorrecta (causados por la excepción EOF)
- Errores de 503 Servicio no disponible
- Errores de 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:
- Aplicación cliente y router
- Router y Message Processor
- Message Processor y servidor de backend
Una vez que identifiques el par de componentes problemático, puedes capturar los paquetes de red con tcpdump en uno o ambos componentes.
Captura de paquetes enviados o recibidos desde un host específico con tcpdump
Usa el siguiente comando tcpdump para capturar todos los paquetes enviados o recibidos desde un host especificado (dirección IP) y guardar la información en el archivo especificado:
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 “any” permite capturar paquetes de todas las interfaces. |
| -s | (snarf/snaplen) especifica la cantidad de cada paquete que se capturará. Usar el valor 0 (cero) te permite capturar el paquete completo. |
| 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 el Message Processor y el servidor de backend:
- Accede a la máquina Message Processor.
- Determina la dirección IP del servidor de backend (supongamos 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 siguiente comando tcpdump:
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
Análisis de tcpdumps
Puedes ver o analizar tcpdumps con el comando tcpdump o la herramienta basada en GUI Wireshark.
Referencias
Volcado 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 los objetos y las clases de Java en el montón en el momento en que se recopila el volcado de montón. Por lo general, son bastante grandes, y varían entre unos pocos cientos de MB y 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
Generación de volcados de montón para un proceso de Java
Java proporciona 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 de proceso de la aplicación Java cuyo volcado de montón se debe capturar. |
Ejemplo
Supongamos que el Message Processor mp-east tiene un uso elevado de memoria o genera errores de OutOfMemory. Determina el ID de proceso del Message Processor con el comando ps en el sistema operativo Unix. Supongamos que es 24569.
Ejecuta la utilidad jmap de la siguiente manera 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 (Memory Analyzer Tool) 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
Volcado 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, que se conoce como seguimiento de pila. Algunos de los subprocesos formarán parte de la aplicación Java que se está ejecutando, mientras que otros serán subprocesos internos de la JVM.
Un volcado de subprocesos revela información sobre cada una de las actividades de los subprocesos de la aplicación. Esta información puede ser muy útil para lo siguiente:
- Diagnosticar problemas como picos de CPU, tiempos de respuesta lentos o aplicaciones Java que no responden
- Optimizar el rendimiento de la aplicación y la JVM
Generación de 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 de proceso de la aplicación Java cuyo volcado de subprocesos deseas capturar. |
| filename | Es el nombre del archivo en el que se escribirá el volcado de subprocesos. |
Ejemplo
Para 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á en el archivo /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Análisis de volcados de subprocesos
Puedes ver los volcados de subprocesos en cualquier editor de texto, como vi (Linux) o notepad (Windows). Consulta Volcado de subprocesos para obtener detalles sobre las diferentes secciones del volcado de subprocesos y cómo interpretar la información.