Você está lendo a documentação do Apigee Edge.
Acesse a
documentação da Apigee X. info
Este tópico discute ferramentas de rede, ferramentas de JVM e registros de diagnóstico que podem ser usados para solucionar problemas relacionados à rede e à JVM no Apigee Edge.
Utilitário de interceptador de pacotes TCP/IP (tcpdump)
A ferramenta tcpdump é um interceptador de pacotes de linha de comando que permite capturar ou filtrar pacotes TCP/IP recebidos ou transferidos por uma rede. Ela está disponível em sistemas operacionais baseados em Linux/Unix. É possível instalar esse utilitário usando o yum da seguinte maneira:
yum install tcpdump
A ferramenta tcpdump é útil para solucionar problemas relacionados à rede ou ao SSL. Por exemplo:
- Erros de gateway inválido 502 (causados pela exceção EOF)
- Erros de serviço indisponível 503
- Falhas de handshake de SSL
Para solucionar qualquer um desses problemas, primeiro determine o par de componentes entre os quais o erro ocorreu. No caso do Edge, pode ser um dos seguintes pares:
- App cliente e roteador
- Roteador e processador de mensagens
- Processador de mensagens e servidor de back-end
Depois de identificar o par de componentes problemático, capture os pacotes de rede usando o tcpdump em um ou ambos os componentes.
Como capturar pacotes enviados/recebidos de um host específico usando o tcpdump
Use o comando tcpdump a seguir para capturar todos os pacotes enviados ou recebidos de um host especificado (endereço IP) e salve as informações no arquivo especificado:
tcpdump -i any -s 0 host <IP address> -w <File name>
Em que:
| Parâmetro | Descrição |
| -i | (interface) especifica a interface da qual os pacotes precisam ser capturados. O uso do valor "any" permite capturar pacotes de todas as interfaces. |
| -s | (snarf/snaplen) especifica a quantidade de cada pacote a ser capturado. O uso do valor 0 (zero) permite capturar o pacote inteiro. |
| Endereço IP | é o endereço IP do host para o qual queremos capturar os pacotes |
| Nome do arquivo | é o nome do arquivo em que o tcpdump precisa ser gravado |
Exemplo
Digamos que você queira capturar os pacotes entre o processador de mensagens e o servidor de back-end:
- Faça login na máquina do processador de mensagens.
- Determine o endereço IP do servidor de back-end (suponha que seja 22.22.22.22) para o qual queremos capturar os pacotes.
Use o comando a seguir para capturar os pacotes de rede de um host com um endereço IP específico:
tcpdump -i any -s 0 host 22.22.22.22 -w rmp-123.pcap
Se o servidor de back-end for resolvido para vários endereços IP, use o nome do host do servidor de back-end no comando tcpdump, conforme mostrado abaixo:
tcpdump -i any -s 0 host <Hostname> -w rmp-123.pcap
Se houver vários servidores de back-end com endereços IP diferentes (22.22.22.22, 33.33.33.33 e 44.44.44.44), use o comando tcpdump abaixo:
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
Como analisar tcpdumps
É possível visualizar ou analisar tcpdumps usando o comando tcpdump ou a ferramenta baseada em GUI Wireshark.
Referências
Heap dumps
Os heap dumps são um snapshot da memória de um processo Java. Eles contêm as informações sobre os objetos e classes Java no heap no momento em que o heap dump é coletado. Geralmente, eles são bastante grandes, variando de algumas centenas de MBs a alguns GBs.
O heap dump é muito útil quando um processo Java, como o processador de mensagens, mostra:
- Alto uso de memória
- OutofMemoryError
Como gerar um heap dump para um processo Java
O Java fornece um utilitário chamado jmap, que permite gerar as estatísticas de memória ou heap dumps de um processo Java em execução.
Use o comando jmap a seguir para gerar o heap dump de um processo Java:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=<filename> <pid>
Em que:
| Parâmetro | Descrição |
| JAVA_HOME | É o diretório de instalação do Java |
| filename | É o nome do arquivo em que o heap dump será gravado |
| pid | É o ID do processo do aplicativo Java cujo heap dump precisa ser capturado |
Exemplo
Digamos que o processador de mensagens mp-east tenha alto uso de memória ou esteja gerando erros de OutOfMemory. Determine o ID do processo do processador de mensagens usando o comando ps no sistema operacional Unix. Digamos que seja 24569.
Execute o utilitário jmap da seguinte maneira para gerar o heap dump:
sudo -u apigee <JAVA_HOME>/bin/jmap -dump:live,format=b,file=mp-east-heapdump.bin 24569
Como analisar heap dumps
Os heap dumps podem ser analisados usando o Eclipse MAT (Memory Analyzer Tool) para determinar os possíveis vazamentos de memória ou quais objetos Java estão levando a um alto uso da memória.
Referências
Ferramenta de análise de memória (MAT, na sigla em inglês)
Despejos de threads
Um despejo de linhas de execução é um snapshot do estado de todas as linhas de execução de um processo Java em execução. O estado de cada linha de execução é apresentado com o conteúdo da pilha, conhecido como rastreamento de pilha. Algumas das linhas de execução farão parte do aplicativo Java em execução, enquanto outras serão linhas de execução internas da JVM.
Um despejo de linhas de execução revela informações sobre cada uma das atividades de linhas de execução do aplicativo. Essas informações podem ser muito úteis para:
- Diagnosticar problemas como picos de CPU, tempos de resposta lentos ou aplicativos Java que não respondem
- Otimizar o desempenho do aplicativo e da JVM
Como gerar despejos de threads
O despejo de linhas de execução de um processo Java pode ser gerado usando o utilitário jstack, conforme mostrado abaixo:
sudo -u apigee <JAVA_HOME>/bin/jstack -l <pid> > <filename>
Em que:
| Parâmetro | Descrição |
| JAVA_HOME | É o diretório de instalação do Java. |
| pid | É o ID do processo do aplicativo Java cujo despejo de linhas de execução você quer capturar. |
| filename | É o nome do arquivo em que o despejo de linhas de execução será gravado. |
Exemplo
Para gerar um despejo de linhas de execução para o ID do processo 37320 no processador de mensagens mp-east, use o comando a seguir:
sudo -u apigee <JAVA_HOME>/bin/jstack -l 37320 > /opt/apigee/edge-message-processor/mp-east-threadDump.txt
De acordo com o exemplo acima, o despejo de linhas de execução do processo será salvo no arquivo /opt/apigee/edge-message-processor/mp-east-threadDump.txt.
Como analisar despejos de threads
É possível visualizar despejos de threads em qualquer editor de texto, como vi (Linux) ou notepad (Windows). Consulte Despejo de linhas de execução para mais detalhes sobre as diferentes seções do despejo de linhas de execução e como interpretar as informações.