Introduzione
In questo documento viene descritto come raccogliere i dump heap e dei thread per Tomcat da Cisco Customer Voice Portal (CVP) Voice eXtensible Markup Language Server (VXML).
Prerequisiti
Requisiti
Cisco raccomanda la conoscenza dei seguenti argomenti:
- CVP
- Server VXML CVP
- Applicazioni VXML CVP
Componenti usati
Le informazioni fornite in questo documento si basano sulle seguenti versioni software e hardware:
- CVP versione 11.5
- CVP VXML Server 11.5
Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.
Problema
Scenario 1. Durante il monitoraggio delle prestazioni del server VXML è stato rilevato che utilizza 4 GB di memoria. Si desidera conoscere la causa principale della perdita di memoria prima che si arresti in modo anomalo.
Scenario 2. Durante il monitoraggio del server VXML, è stato rilevato che il server VXML utilizza thread elevati ( ~ 500), il che è piuttosto insolito. Si desidera sapere come analizzare l'utilizzo dei thread e individuare lo stato del thread e il componente/applicazione che richiede più thread.
Ad esempio: VXML Tomcat utilizza 4,5 GB di memoria totale, come illustrato nell'immagine.
Memoria VXML a 4,5 GB
Risoluzione dei problemi
Passaggi per ottenere il dump dell'heap
Passaggio 1. Scaricare la versione JDK simile alla versione installata in 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)
Passaggio 2. Copiare JDK dal desktop al server 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"
Nota: È sufficiente scaricare JDK da http://www.oracle.com/technetwork/java/javaee/downloads/index.html e installare EXE nella cartella locale e copiare JDK dal computer locale a CVP.
Passaggio 3. Raccogliere l'ID processo ( PID) del server VXML da Gestione attività.
Passaggio 4. Eseguire questo comando per raccogliere HeapDump. (ad esempio: jmap -dump:file=vxml.hprof <PID DELL'istanza TOMCAT).
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:il profilo hProf viene creato ed è possibile copiarlo sul sistema locale e monitorarlo in modalità non in linea.
Passaggi per ottenere il dump del thread
La raccolta di dump del thread è relativamente semplice rispetto al dump dell'heap.
Passaggio 1. Connettersi al server VXML CVP in <server VXML CVP>:9696 (9696 è la porta JMX predefinita per il server VXML) che utilizza jVisualVM.
Passaggio 2. Fare clic con il pulsante destro del mouse su JXM Connection e selezionare Thread Dump.
Passaggio 3. In questo caso viene eseguito il dump del thread nel server remoto, dove può essere salvato come file e utilizzato per ulteriori analisi.