码迷,mamicode.com
首页 > Web开发 > 详细

websphere性能调优之dump命令

时间:2016-01-14 15:34:46      阅读:382      评论:0      收藏:0      [点我收藏+]

标签:

websphere性能调优之dump命令

 

基于WebSphere 构建的企业应用,时常会出现性能问题,在严重的情况下还会提示出内存溢出,这是一件很让人恼怒的事情。在WebSphere Application Server(Was)运行的时候,内存溢出,会生成大量的溢出文件,如Javacore, Heapdump等文件,占用了大量的磁盘空间。在这种情况下,时常会出现一连串的系统问题,如部署在Was的所有应用服务都报错,Was连控制台也无法访问等。

 

为解决问题,我们通常会选择重新启动整个Was或者服务器,然后分析运行日志SystemOut.logystemErr.logative_stdout.lognative_stderr.log 和系统内存溢出的时候产生的JavacoreHeapdump文件来寻找出问题。

 

如果我们在测试中发现系统运行一段时间后响应开始缓慢,但Was又没有挂掉时,就可以通过人工操作产生JavaCoreHeapdump等文件,通过对相关文件、日志的分析来查找系统是否存在内存溢出的隐患。

 

下面介绍一下产生JavaCoreHeapdump文件的方法——webspheredump命令。

 

一、Linux平台

大致步骤:

1)进入WAS安装目录的bin目录,如果是WAS6.0, 请进入所在profilebin目录;

2)执行wsadmin.sh进入WSADMIN命令行方式提示符会变成wsadmin>

3) 执行以下命令:(注意将server1改为你的server的名字,两个逗号之间没空格)

a) 设置jvm环境变量:

wsadmin> set jvm [$AdminControl queryNames type=JVM,process=server1,*] 

 

b) 生成javacore文件:

wsadmin> $AdminControl invoke $jvm dumpThreads

 

c) 退出WSADMIN命令行:

wsadmin> quit

 

 

执行完后将在was安装目录或所在profile的目录下产生JavaCore文件,通过分析JavaCore以及相关的SystemOutSystemErrnativestd_err等文件可以得知系统gc是否正常,是否存在有内存溢出的情况。

 

具体操作:

 

--进入bin目录

[root@csspvm bin]# pwd     

/opt/IBM/WebSphere/WAS6.1/profiles/AppSrv01/bin

 

--进入WSADMIN命令行方式

[root@csspvm bin]# ./wsadmin.sh -username root -password root  

WASX7209I: Connected to process "server1" on node csspvmNode02 using SOAP connector;  The type of process is: UnManagedProcess

WASX8011W: AdminTask object is not available.

WASX7029I: For help, enter: "$Help help"

 

--设置jvm环境变量

wsadmin>set objectName [$AdminControl queryNames WebSphere:type=JVM,process=server1, node=webNode01,*]    

WebSphere:name=JVM,process=server1,platform=proxy,node=csspvmNode02,j2eeType=JVM,J2EEServer=server1,version=6.1.0.0,type=JVM,mbeanIdentifier=JVM,cell=webNode01Cell,spec=1.0

 

  

 

--生成heapdump文件

wsadmin>$AdminControl invoke $objectName generateHeapDump     

/opt/IBM/WebSphere/WAS6.1/profiles/AppSrv01/./heapdump.20100904.075650.3576.phd

 

wsadmin>set jvm [$AdminControl queryNames WebSphere:type=JVM,process=server1,node=webNode01,*]

 

  

--生成JavaCore文件

wsadmin>$AdminControl invoke $jvm dumpThreads

wsadmin>quit

--"webNode01"websphere节点名称。

 

取线程:JavaCore

set objectName [$AdminControl queryNames WebSphere:type=JVM,process=server1,node=webNode01,*]

set jvm [$AdminControl queryNames WebSphere:type=JVM,process=server1,node=webNode01,*]

$AdminControl invoke $objectName dumpThreads

$AdminControl invoke $jvm dumpThreads

  

取堆栈:heapdump

wsadmin -user admin -password zxin10 -c "$AdminControl invoke [$AdminControl queryNames WebSphere:type=JVM,process=server1,node=webNode01,*] generateHeapDump"

$AdminControl invoke $jvm generateHeapDump

$AdminControl invoke [$AdminControl queryNames WebSphere:type=JVM,process=server1,node=webNode01,*] generateHeapDump

  

二、 Windows平台

 

Windows 下,生成JavaCoreHeapDump的方式比较简单。

使用Ctrl+Break

如果WebSphere是在命令行窗口启动,有启动命令行窗口,那么可以通过在命令行窗口中使用Ctrl+Break键,产生JavaCoreHeapDump

 

调用程序

IBM JDK提供了接口,通过调用这个接口,可以直接生成JavaCore以及 HeapDump

 

生成JavaCore

调用JSP文件,jsp中只有一行语句,如下所示

<%
com.ibm.jvm.Dump.JavaDump();
%>

 

生成HeapDump

调用JSP文件,jsp中只有一行语句,如下所示

<%
com.ibm.jvm.Dump.HeapDump();
%>

 

调用方法后将在was安装目录或所在profile的目录下产生相关JavaCoreHeapdump文件。

 

好了,到这里大家学会了如何产生JavaCoreHeapdump文件,问题又来了:怎么分析产生的JavaCoreHeapdump文件呢?后面会为大家继续分享”JavaCoreHeapdump文件分析方法”。

websphere性能调优之dump命令

标签:

原文地址:http://www.cnblogs.com/notester/p/5130176.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!