Windchill 在 AIX heapdump 和 javacore的問題
Windchill系統中,産生dump和javacore的主要原因是記憶體溢出,一般情況下,Methodserver和tomcat的記憶體設定偏小,在并發使用者很多時,會造成記憶體溢出,這種情況隻要修改配置就可以;另外還有伺服器的配置已經達到瓶頸,隻能更新伺服器的硬體配置了,建議配置是1個CPU需要4G的記憶體;還有一種是由于客制化代碼不規範,沒有釋放資源,造成記憶體的堆積,這種情況隻要重新開機Windchill服務就正常了,需要跟蹤代碼,難度較大。
你是不是在AIX裡裝了用到IBM JVM的服務?比如WebLogic,Websphere?
一般是IBM JVM崩潰或者JVM記憶體溢出時才生成這種檔案。
你的JDK是什麼版本的?
以下是IBM針對WebSphere及不同版本的JDK給出的解決方法,你可以參考一下:
一 IBM JDK V1.3.1 SR5版本
為了輔助第一時間捕捉錯誤資訊,從IBM JDK V1.3.1 SR5(131-20030618)版本開始,當Java的堆空間耗盡時系統會自動的産生heapdumps和javacores。如果希望在Java堆空間耗盡時不會自動的産生heapdumps和javacores,請按照如下的步驟操作:
對于WAS 4.0.x:
1. 找到<WAS_HOME>/bin/startupServer.sh (.bat)檔案,其中<WAS_HOME>表示WAS的安裝目錄
2. 用文本編輯器打開該檔案,并在檔案的頂部添加如下的2行:
Unix平台:
export IBM_HEAPDUMP_OUTOFMEMORY=false
export IBM_JAVADUMP_OUTOFMEMORY=false
Window平台:
set IBM_HEAPDUMP_OUTOFMEMORY=false
set IBM_JAVADUMP_OUTOFMEMORY=false
3. 儲存并關閉檔案,重新啟動WAS
對于WAS 5.0.x或者5.1.x:
1. 打開管理控制台,依次選擇:伺服器 > 應用伺服器 > 需要更改的伺服器名稱 > 程序定義 > 環境條目
2. 建立如下的2個條目:
Name Value
IBM_HEAPDUMP_OUTOFMEMORY false
IBM_JAVADUMP_OUTOFMEMORY false
3. 儲存配置的更改,重新啟動WAS
二 IBM java SDK 1.4.2 SR5
從 java SDK 1.4.2 SR5開始,關于生成heapdump和javacore,引入了一個新的特性去避免系統自動生成heapdump和javacore 造成作業系統檔案系統空間被耗盡,這樣在java SDK 1.4.2 SR5及之後的版本中,當使用 kill -3時也将不會産生heapdump和javacore檔案。
這個新的特性可以允許設定相應的選項來控制java程序在收到相應的信号時最多生成多少個heapdump和javacore檔案。要使用這個新的特性,需要首先在作業系統的環境中設定下面的變量:
export JAVA_DUMP_OPTS="ONANYSIGNAL(JAVADUMP[n],HEAPDUMP[m])"
其中,n 是最大的javacore生成的數目, m 是最大的heapdump生成的數目。
在設定了這個變量後,java程序在收到kill -3 (或其他的信号)時将會生成heapdump和javacore檔案,檔案的最大數目分别等于選項中的m和n的值,可以根據實際的需求設定合理的m和n的值。
例如:
在啟動websphere之前,設定下面的環境變量:
export JAVA_DUMP_OPTS="ONANYSIGNAL(JAVADUMP[5],HEAPDUMP[5])"
這樣在收到相應的信号的時候,将最大生成5個heapdump和javacore,之後将不會再生成heapdump和javacore檔案。
注意:
如果設定了IBM_heapdump=true變量,将會生成一個額外的heapdump檔案,這樣heapdump的檔案将會是n+1個,在Java SDK 1.4.2 SR7中将避免這個情況。
如果以上2種方法不能解決,以下2個建議
1 到IBM官方網站查詢是否還有别的解決方法,以下是網址
<a href="http://www-900.ibm.com/cn/support/viewdoc/knowledgebase">http://www-900.ibm.com/cn/support/viewdoc/knowledgebase</a>
2 新增硬體記憶體數或修改代碼。