昨天有測試了預設的Heap Size上限,並透過native_stderr.log驗證了,
今天我把Heap Size上限改成500MB試試看native_stderr.log上的結果會不會有所不同 。
Application servers > server1 > Process definition > Java Virtual Machine
我把
Initial heap size 改成256MB
Maximum heap size 改成512MB
重啟之後,再製造一次OOM。
分析GC的小工具先從這裡下載:
https://www.ibm.com/support/pages/ibm-pattern-modeling-and-analysis-tool-java-garbage-collector-pmat
正常情況下,電腦如果有裝JDK,下載之後只要雙擊就能開啟小工具了
由於我們是在docker容器的環境裡面運作WebSphere,當初建container時沒有規劃掛上volume,因此無法直接取得container裡面的log檔,
要把native_stderr.log從container給撈出來
可以使用以下指令:
docker cp test-was8.5.5.20:/opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/native_stderr.log "D:/tmp"
雖然麻煩了一點,但還是能達到目的。
在本機取得native_stderr.log之後,再用滑鼠把log拖曳到IBM小工具的視窗內,就會工具就會自動讀取log內容了
點擊上方長條圖示,開啟圖表
從線圖可以看出,比起前一次OOM(第一條藍色直線),這次發生OOM時(第二條藍色直線)使用的記憶體高出許多。
表示我們調整heap size是有效果的,能夠讓程式使用更多的記憶體空間。