Introduction
Este documento descreve como coletar despejo de Heap e despejo de Thread para Tomcat do Cisco Customer Voice Portal (CVP) Voice eXtensible Markup Language Server (VXML).
Prerequisites
Requirements
A Cisco recomenda que você tenha conhecimento destes tópicos:
- CVP
- CVP VXML Server
- Aplicações VXML do CVP
Componentes Utilizados
As informações neste documento são baseadas nestas versões de software e hardware:
- CVP versão 11.5
- CVP VXML Server 11.5
The information in this document was created from the devices in a specific lab environment. Todos os dispositivos usados neste documento iniciaram com uma configuração limpa (padrão). Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Problema
Cenário 1. Ao monitorar o desempenho do VXML Server, você descobriu que ele usa 4 GB de memória. Você gostaria de saber a causa raiz do vazamento de memória antes que ele trave.
Cenário 2. Ao monitorar o VXML Server, você descobriu que o servidor VXML usa segmentos altos ( ~ 500), o que é bastante incomum. Você gostaria de saber como analisar o uso do thread e descobrir o estado do thread e o componente/aplicativo que leva mais threads.
Por exemplo: O VXML Tomcat consome 4,5 GB de memória total, como mostrado na imagem.
Memória VXML a 4,5 GB
Troubleshoot
Etapas para obter o despejo de heap
Etapa 1. Faça o download da versão JDK semelhante à versão instalada no CVP
C:\Cisco\CVP\jre\bin>java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) Client VM (build 24.51-b03, mixed mode)
Etapa 2. Copie o JDK do desktop para o servidor CVP.
Download windows JDK exe
Open with 7-Zip
Dump contents into a directory %JDK-EXE%
cmd: cd %JDK-EXE%.rsrc\1033\JAVA_CAB10
cmd: extrac32 111
Now have a tools.zip in directory, open it in 7-Zip
Extract contents into a new directory %JDK-VERSION%
cmd: cd %JDK-VERSION%
cmd: for /r %x in (*.pack) do .\bin\unpack200 -r "%x" "%~dx%~px%~nx.jar"
Note: Basta baixar o JDK de http://www.oracle.com/technetwork/java/javaee/downloads/index.html e instalar o EXE na pasta local e copiar o JDK de sua máquina local para o CVP .
Etapa 3. Colete o ID do processo ( PID) do servidor VXML do Gerenciador de tarefas.
Etapa 4. Execute este comando para coletar HeapDump. ( Ex: jmap -dump:file=vxml.hprof <PID OF TOMCAT Instance).
C:\jdk1.7.0_80\jdk1.7.0_80\bin>jmap -dump:file=vxml.hprof 1308
Dumping heap to C:\jdk1.7.0_80\jdk1.7.0_80\bin\vxml.hprof ...
Heap dump file created
C:\jdk1.7.0_80\jdk1.7.0_80\bin>
Nota:O seu hProf é criado e é possível copiar para o sistema local e monitorar offline.
Etapas para obter o despejo de thread
A coleta de despejo de segmentos é relativamente fácil em comparação com o despejo de heap.
Etapa 1. Conecte-se ao CVP VXML Server em <CVP VXML Server>:9696 (9696 é a porta JMX padrão para VXML Server) que usa jVisualVM.
Etapa 2. Clique com o botão direito do mouse em JXM Connection e Collect Thread Dump.
Etapa 3. Aqui, o despejo de thread foi despejado no servidor remoto, onde pode ser salvo como um arquivo e usado para análise posterior.