websphere性能调优之dump命令

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

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

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

下面介绍一下产生JavaCore、Heapdump文件的方法——websphere的dump命令。

一、Linux平台

大致步骤:

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

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以及相关的SystemOut,SystemErr和nativestd_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 下,生成JavaCore与HeapDump的方式比较简单。

1 使用Ctrl+Break

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

2 调用程序

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

生成JavaCore:

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

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

生成HeapDump

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

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

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

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

websphere性能调优之dump命令的更多相关文章

  1. 基于Linux的WebSphere性能调优与故障诊断

    一.关于was数据源等问题的配置 (1)关于was数据源连接池的最大.最小配置多大合适?怎样去计算? (2)关于JVM的配置,64位系统,64位WAS,最值小和最大配置多大最优?怎样去计算? (3)应 ...

  2. 性能调优之vmstat命令

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.IO读写.CPU活动等进行监视.它是对系统的整体情况进行统计,不足之处是无法对某 ...

  3. 性能调优之vmstat命令(转)

    vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存.进程.IO读写.CPU活动等进行监视.它是对系统的整体情况进行统计,不足之处是无法对某 ...

  4. (转)JVM性能调优之生成堆的dump文件

    转自:http://blog.csdn.net/lifuxiangcaohui/article/details/37992725 最近因项目存在内存泄漏,故进行大规模的JVM性能调优 , 现把经验做一 ...

  5. JVM性能调优监控命令jps、jinfo、jstat、jmap+jhat、jstack使用详解

    JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps.jinfo.jstat.jmap+jhat.jstack等小巧的工具,本博客希望能起抛砖 ...

  6. 盘点linux系统中的12条性能调优命令。

    导读 性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU.内存.硬盘.网络等系统资源长期处于耗尽的状 ...

  7. JVM常用命令和性能调优建议 [Could not create the Java virtual machine]

    一.查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号. ...

  8. JVM常用命令和性能调优建议

      一.查看jvm常用命令jinfo:可以输出并修改运行时的java 进程的opts. jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程 ...

  9. 盘点linux操作系统中的10条性能调优命令,一文搞懂Linux系统调优

    原文链接:猛戳这里 性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU.内存.硬盘.网络等系统资源长 ...

随机推荐

  1. 输入任意一个字符串,如:“abDEe23dJfd343dPOddfe4CdD5ccv!23rr”。取出该字符串中所有的字母。顺序不能改变!并把大写字母变成小写,小写字母变成大写!

    package lovo.Linyoujia; import java.util.Scanner; public class Java { @param args public static void ...

  2. RN的像素及布局

    转自:http://www.cocoachina.com/ios/20150420/11608.html 宽度单位和像素密度 react的宽度不支持百分比,设置宽度时不需要带单位 {width: 10 ...

  3. Android 振动器

    今天介绍一下Android的振动器Vibrator,有三个方法来控制手机振动: 1.void vibrate(long milliseconds):控制手机振动milliseconds毫秒. 2.vo ...

  4. inside the C++ Object model总结

    一. 关于对象 1.内联函数:能够除去函数调用的开支,每一处内联函数的调用都是代码的复制.这是一种空间换取时间的做法,若函数代码量大或者有循环的情况下,不宜内联(这件事有些编译器会自动帮你做).在类中 ...

  5. 007-Scala类的属性和对象私有字段实战详解

    007-Scala类的属性和对象私有字段实战详解 Scala类的使用实战 变量里的类必须赋初值 def函数时如果没参数可不带括号 2.不需要加Public声明 getter与setter实战 gett ...

  6. C/C++函数调用的几种方式及函数名修饰规则以及c++为什么不允许重载仅返回类型不同的函数

    我们知道,调用函数时,计算机常用栈来存放函数执行需要的参数,由于栈的空间大小是有限的,在windows下栈是向低地址扩展的数据结构,是一块连续的内存区域.这句话的意思是栈顶的地址和栈的最大容量是系统预 ...

  7. python获取指定时间段内的随机不重复的时间点

    上篇 <python时间时分秒与秒数的互相转换>http://www.cnblogs.com/gayhub/p/6154707.html 提到了把时间转成秒数的方法, 这篇写写转换成秒数后 ...

  8. C#在数据层过滤属性中的主键

    C#使用泛型+反射做为数据层时,一个很都头疼的问题,如何让C#属性在程序里识别出哪个属性是主键,在拼接SQL时,不能把主键拼接到SQL语句里. 这个需要自定义一个属性.新建一个类文件,命名为Prosp ...

  9. “用户、组或角色'XXX'在当前数据库中已存在”问题

    一般在还原数据库后,给这个数据库添加一个登录名时出现. 例如数据库备份文件中已经包含了用户abc,现在还原了数据库,然后发现现有数据库中没有abc这个用户,想要新建一个abc用户,作为该数据库的own ...

  10. js的异常捕获

    try{ ...some code... }catch(e){ ...some code... //处理错误 throw(e.name); //抛出异常 }finally{<BR> // ...