目录

简介

先决条件

要求

使用的组件

问题

故障排除

获取堆转储的步骤

获取线程转储的步骤

简介

本文档介绍如何从思科客户语音门户(CVP)语音可扩展标记语言服务器(VXML)收集Tomcat的堆转储和线程转储。

先决条件

要求

Cisco 建议您了解以下主题：

- CVP

- CVP VXML服务器

- CVP VXML应用

使用的组件

本文档中的信息基于以下软件和硬件版本：

- CVP版本11.5

- CVP VXML服务器11.5

本文档中的信息都是基于特定实验室环境中的设备编写的。用于本文的所有设备始于初始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

问题

场景1.监控VXML服务器性能时，您发现它使用4GB内存。  您希望在内存泄漏崩溃之前了解其根本原因。

场景2.在监控VXML服务器时，您发现VXML服务器使用高线程（约500），这非常罕见。您想了解如何分析线程使用情况并找出线程状态和需要更多线程的组件/应用程序。

例如：VXML Tomcat消耗4.5GB的总内存，如图所示。

4.5 GB的VXML内存

故障排除

获取堆转储的步骤

步骤1.下载与CVP中安装的版本类似的JDK版本

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)

步骤2.将JDK从桌面复制到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"

注意：只需从http://www.oracle.com/technetwork/java/javaee/downloads/index.html下载JDK，并在本地文件夹上安装EXE，然后将JDK从本地计算机复制到CVP。

步骤3.从任务管理器收集VXML服务器的进程ID(PID)。

步骤4.执行此命令以收集堆转储。（例如：jmap -dump:file=vxml.hprof <PID OF 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>

注意：您的专业版已创建，您可以复制到本地系统并脱机监控。

获取线程转储的步骤

与堆转储相比，线程转储收集相对容易。

步骤1.在<CVP VXML Server>:9696（9696是使用jVisualVM的VXML服务器的默认JMX端口）上连接到CVP VXML服务器。

步骤2.在JXM连接上右键单击并收集线程转储。

步骤3.此处线程转储转储转储到远程服务器中，可将其另存为文件并用于进一步分析。