jca工具分析was的javacore實例解析

 一朋友打電話求助,問怎樣簡單方便的分析WAS的JAVACORE文件。我給他做了個實例解析,下面是一個過程記錄。

一、工具下載

可從IBM官網下載JCA工具,專門用來分析JAVACORE文件的工具。使用JCA工具需要JAVA環境,再下載一個JDK。由於我們使用的JCA是3.9.6版,所以下載一個JDK1.6版的就行。


二、啓動JCA工具

安裝完JDK1.6後,配置JAVA環境。JAVA環境的配置簡單說一下:

打開 我的電腦--屬性--高級--環境變量
新建系統變量JAVA_HOME 和CLASSPATH
變量名:JAVA_HOME

變量值:C:\Program Files\Java\1.6.0_37

變量名:CLASSPATH

變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;

選擇“系統變量”中變量名爲“Path”的環境變量,雙擊該變量,把JDK安裝路徑中bin目錄的絕對路徑,添加到Path變量的值中,並使用半角的分號和已有的路徑進行分隔。
變量名:Path
變量值:C:\Program Files\Java\1.6.0_37\bin;C:\Program Files\Java\1.6.0_37\jre\bin;


啓動JCA工具

C:\jca396>java -Xmx2000M -jar jca396.jar

Error occurred during initialization of VM

Could not reserve enough space for object heap

Could not create the Java virtual machine.

如果出現這個錯誤,把內存分配小點就可以了。


C:\jca396>java -Xmx500M -jar jca396.jar  javacore.20131101.txt

175502558.jpg

點開waiting狀態比較多的事件,有如下顯示

175652800.jpg

這是典型的BLOCK堆載,在IBM官網有相應的參考文章,解決這個問題一個比較簡單的方法就是增大WAS的JVM大小。


三、解決問題

進入WAS控制檯,找到JVM設置,進行調整。如圖:

服務器--應用程序服務器--app01--進程定義-Java 虛擬機

180506547.jpg


注:當部署在websphere上的應用出現了問題,比如調用緩慢,線程掛起,節點假死的時候,光看應用的SystemOut.log是不夠的,我們還需要手動生成javacore文件,查詢服務器上各個線程的堆棧情況,它可以具體到一個方法的調用情況。Javacore是Java應用程序在某一時間的文本表示形式,也可理解爲Java Dump(通常稱爲Thread Dump)的線程轉儲文件。該文件記錄了整個JVM的運行情況,包含線程、垃圾回收、JVM運行參數、內存地址等信息。JVM的許多問題都可以用這個文件進行診斷,其中比較典型的包括線程阻塞、CPU使用率過高、JVM Crash、堆內存不足和類裝載等問題。

Javacore文件通常以*.txt方式顯示,名稱格式主要是以Javacore爲頭,加上日期號、產生的時間號、當時的線程編號。

Javacore文件的生成

ps -ef | grep java查看進程ID,在linux 系統中 使用 kill -3 pid ,它會在應用程序的概要文件的目錄下生成一個javacore 文件,比如在 /usr/IBM/WebSphere/AppServer1/profiles/AppSrv01下


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章