JVM監控可以直觀展示指定時間段內的多項內存指標,雖然圖表能體現出內存使用量過大的情況,但無法顯示具體信息,因此不能幫助您排查問題產生的原因。此時您可以創建內存快照,通過詳細的日志查看內存占用的詳細信息,幫助您排查內存泄漏和內存浪費等內存問題。
前提條件
已下載ARMS Java Probe探針,且探針版本為2021年09月24日之后發布的2.7.1.2或以上版本。
目前僅支持為Linux系統新建內存快照。
使用限制
內存快照功能是JVM內置的HeapDump能力(等價于jmap -dump:all)的平臺化,HeapDump本身可能出現占用一定量額外內存、觸發SafePoint和GC等情況,這些情況會暫停所有非JVM Thread,從而造成應用暫停,暫停時間無法控制,因此請您在生產環境使用前做好相關風險評估后,再使用此功能。
使用內存快照功能,對應用有以下依賴限制:
2.7.3.5及以下版本的探針:不支持JRE環境、不支持Java 11、依賴JAVA_HOME環境變量、依賴JAVA_HOME/lib/tools.jar文件、不支持Alpine平臺。
2.8.3及以上版本的探針:支持JRE、支持Java 8和Java 11、支持Alpine平臺、依賴JAVA_HOME環境變量、依賴Java命令(需要將
$JAVA_HOME/bin
配置到PATH環境變量)。3.2.9及以上版本探針:內存快照進行了大量優化,已無需將$JAVA_HOME/bin配置到PATH環境變量。建議優先將探針升級到3.2.9或以上版本,升級操作請參見升級ARMS探針。
如果應用所部署環境的VPC網絡配置了可訪問阿里云對象存儲OSS的Bucket限制策略,需要將內存快照功能相關的Bucket(arms-heapdump-<regionId>)配置在您的策略規則中。請將<regionId>換成對應的地域ID,例如您應用部署在cn-hangzhou地域,Bucket則對應為arms-heapdump-cn-hangzhou。
說明由于該功能會將應用實例所采集的快照數據上傳到ARMS統一的OSS Bucket中進行存儲與處理,如果配置相關策略但未將ARMS統一的OSS Bucket配置在其中會導致數據無法被有效采集。
當前歷史快照保存時長暫無限制,但ARMS將于2023年07月01日零時調整歷史快照的保存時長為90天,即07月01日零時起,ARMS將不再保存90天前的快照任務,請及時做好數據備份。
創建內存快照
登錄ARMS控制臺,在左側導航欄選擇 。
在應用列表頁面頂部選擇目標地域,然后單擊目標應用名稱。
說明語言列的圖標含義如下:
:接入應用監控的Java應用。
:接入應用監控的Golang應用。
-:接入可觀測鏈路 OpenTelemetry 版的應用。
在左側導航欄單擊應用詳情,在頁面右側單擊JVM監控頁簽。
在JVM監控頁簽右上角,單擊創建內存快照。
在創建內存快照對話框中選擇一個IP,并單擊保存。
說明如果在應用詳情頁面左側已選擇目標實例,則IP字段會默認選中該實例的IP地址。
在彈出的提示框中單擊強制dump。
重要快照任務的運行時間從幾分鐘到半小時不等。應用進程在轉儲期間會停止響應,請謹慎使用。
查看內存快照詳情
在JVM監控頁簽右上角,單擊歷史快照。
在快照任務數量面板展示了任務執行狀態:綠色表示快照任務執行成功,藍色表示快照任務執行中,紅色表示快照任務執行失敗。單擊任務右側的詳情可以查看任務執行進度。
單擊目標任務右側的分析,在應用診斷分析平臺查看分析結果。更多信息,請參見ATP文檔。