Einführung
In diesem Dokument wird beschrieben, wie Sie Heap Dump und Thread Dump für Tomcat vom Cisco Customer Voice Portal (CVP) Voice eXtensible Markup Language Server (VXML) sammeln.
Voraussetzungen
Anforderungen
Cisco empfiehlt, über Kenntnisse in folgenden Bereichen zu verfügen:
- CVP
- CVP VXML-Server
- CVP VXML-Anwendungen
Verwendete Komponenten
Die Informationen in diesem Dokument basieren auf den folgenden Software- und Hardwareversionen:
- CVP-Version 11.5
- CVP VXML-Server 11.5
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Problem
Szenario 1. Während Sie die Leistung des VXML-Servers überwachen, haben Sie festgestellt, dass dieser 4 GB Speicher verwendet. Sie möchten die Ursache des Speicherlecks kennen, bevor er abstürzt.
Szenario 2. Während Sie den VXML-Server überwachen, haben Sie entdeckt, dass der VXML-Server hohe Threads ( ~ 500) verwendet, was ziemlich ungewöhnlich ist. Sie möchten wissen, wie Sie die Threadverwendung analysieren und den Threadzustand und die Komponente/Anwendung ermitteln, die mehr Threads beansprucht.
Beispiel: VXML Tomcat verbraucht 4,5 GB Arbeitsspeicher, wie im Bild gezeigt.
VXML-Speicher bei 4,5 GB
Fehlerbehebung
Schritte zum Abrufen von Heap-Dump
Schritt 1: JDK-Version ähnlich der Version herunterladen, die in CVP installiert ist
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)
Schritt 2: Kopieren Sie JDK vom Desktop auf den CVP-Server.
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"
Hinweis: Laden Sie einfach JDK von http://www.oracle.com/technetwork/java/javaee/downloads/index.html herunter und installieren Sie EXE im lokalen Ordner und kopieren Sie das JDK von Ihrem lokalen Rechner nach CVP .
Schritt 3: Erfassen Sie die Prozess-ID (PID) des VXML-Servers vom Task-Manager.
Schritt 4: Führen Sie diesen Befehl aus, um HeapDump zu sammeln. (Bsp.: jmap -dump:file=vxml.hprof <PID DER TOMCAT-Instanz).
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>
Hinweis: Ihr hProf wird erstellt, Sie können auf das lokale System kopieren und offline überwachen.
Schritte zum Abrufen von Thread-Dump
Thread-Dump-Sammlung ist relativ einfach im Vergleich zu Heap-Dump.
Schritt 1: Herstellen einer Verbindung zum CVP VXML-Server auf <CVP VXML-Server>:9696 (9696 ist der Standard-JMX-Port für VXML-Server), der jVisualVM verwendet.
Schritt 2: Klicken Sie mit der rechten Maustaste auf JXM Connection und Collect Thread Dump.
Schritt 3: Hier wird Thread-Dump im Remote-Server abgelegt, wo er als Datei gespeichert und für weitere Analysen verwendet werden kann.