iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
DevOps

30天WebSphere入門及經驗分享系列 第 12

D12/WebSphere Log & Debug(四) - Java dumps and cores

  • 分享至 

  • xImage
  •  

有在做維運工作的都知道,很多時候,程式就那麼突然地crash了,
我們最重要的工作是要盡快將服務復原到可用狀態讓一切恢復正常。

第二重要的是什麼呢,
第二重要的是要盡可能保留發生狀況當下的所有軌跡紀錄,以便進一步查找問題發生的原因。

如果是我們部屬上去的程式寫法有問題導致的,那在問題發生的當下,查看log應該就能知道事件的來龍去脈了,
如果是資料庫發生問題,通常程式的log也能找到些蛛絲馬跡。

最怕遇到的還是我們無法觸及更深層的部分,可能是使用的框架的bug? 函示庫的bug? WebSphere的bug? 又或者jvm本身的問題?

為了能更好的找到問題發生的原因,我們會需要產出Java dumps and cores,以便做進一步的分析。
在console中,
左側選單 > Troubleshooting > Java dumps and cores
https://ithelp.ithome.com.tw/upload/images/20220927/20128973ReWjeyn4Q8.png
透過這個頁面,有三種紀錄檔可以產出,分別是Heap dump 、 Java core 、 System dump

Heap dump可以產生當下jvm記憶體的使用紀錄
Java core 則是產生程式當下執行class的紀錄
System dump則涵蓋了以上兩者的資訊,因此檔案大小也會最大

在這個頁面透過按鈕可以產出以上三種檔案,而產出的檔案預設是放在這裡:

/opt/IBM/WebSphere/AppServer/profiles/AppSrv01

在程式發生問題時產出Heap dump 、 Java core 或 System dump 是很好的留存紀錄的一個方法
不過也要注意系統空間是否足夠,尤其是你的max heap size有另外調整得很高的時候,
很有可能會產生極為龐大的Heap dump及System dump
若把硬碟塞爆了可能會造成二次傷害,拖延了服務復原的時間。

最後補充一下調整這些dump檔產生位置的方法:

只要在/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin
裡面的setupCmdLine.sh
的開頭增加以下幾行

IBM_JAVACOREDIR=/wasdump
export IBM_JAVACOREDIR

IBM_HEAPDUMPDIR=/wasdump
export IBM_HEAPDUMPDIR

IBM_COREDIR=/wasdump
export IBM_COREDIR

TMPDIR=/wasdump
export TMPDIR

並在存檔後重啟server,之後dump檔的產生位置就會改到/wasdump了(也可自行改成其他目錄)

IBM文件可參考:
https://www.ibm.com/support/pages/websphere-application-server-dump-locations-and-setup


上一篇
D11/WebSphere Log & Debug(三) - Log mode
下一篇
D13/調整Server的Heap Size
系列文
30天WebSphere入門及經驗分享36
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言