websphere性能調優之dump命令


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文件分析方法”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM