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监控页签右上角,单击历史快照。
在快照任务数量面板展示了任务执行状态:绿色表示快照任务执行成功,蓝色表示快照任务执行中,红色表示快照任务执行失败。单击任务右侧的详情可以查看任务执行进度。
单击目标任务右侧的分析,在应用诊断分析平台查看分析结果。