CPU&内存诊断可以有效发现Java程序中因为CPU、内存和IO导致的瓶颈问题,并且按照方法名称、类名称和行号进行细分统计,最终协助开发者优化程序、降低延迟、增加吞吐、节约成本。本文介绍如何开通ARMS CPU&内存诊断功能以及如何查看CPU&内存诊断数据。

前提条件

重要 仅专家版支持CPU&内存诊断功能,开通专家版的操作,请参见专家版
请先接入ARMS应用监控,并且将Agent版本更新至v2.7.3.5或以上版本。接入应用监控的操作,请参见应用监控接入概述
  • 对于ACK用户,ARMS管理员可以通过灰度规则进行配置,如果您发现您的探针版本不符合预期并且希望升级或者回退到特定版本,请联系我们(钉钉用户群号:22560019672)。
  • 对于非ACK用户,探针版本需自行升级,您可以通过ARMS控制台应用监控 > Agent列表页面提供的探针地址进行手动更新替换。

使用限制

说明 目前仅杭州、上海、深圳和北京地域支持CPU&内存诊断功能,其他地域如需体验此功能,请联系用户群(群号:22560019672)协助开通。

Java版本支持

ARMS Java Profiler依赖JDK Flight RecorderAsync-Profilier

  • 由于非LTS JDK版本可能不包含与ARMS Profiler相关的稳定性和性能修复,因此请使用Long Term Support JDK的版本:JDK 8、JDK 11和JDK 17。
  • ARMS Profiler支持基于Hotspot的JVM,包括Open JDK 11及以上版本、Oracle JDK 11及以上版本、OpenJDK 8(Version 1.8.0.262/8u262及以上版本)和Azul Zulu 8(Version 1.8.0.212/8u212及以上版本),但不支持Open JDK 9,因为Open JDK 9不支持JDK Flight Recorder。
  • CPU&内存诊断不支持Serverless平台。

Java 8支持

下表列出了CPU&内存诊断支持OpenJDK的Vendors,因此在这些版本之后都支持JDK Flight Recorder。
VENDORJDK VERSION THAT INCLUDES FLIGHT RECORDER
Azulu212(u262 is recommended)
AdoptOpenJDKu262
RedHatu262
Amazon (Corretto)u262
Bell-Soft (Liberica)u262
All vendors upstream buildsu272

您可以通过System.getProperty("java.vendor")获取JDK的Vendor信息。如果您的JDK Vendor不在上述列表,并且需要支持,请联系我们(钉钉用户群号:22560019672)并提供Vendor信息。

在控制台上开通CPU&内存诊断功能

  1. 登录ARMS控制台,在左侧导航栏选择应用监控 > 应用列表
  2. 应用列表页面顶部选择目标地域,然后单击目标应用名称。
  3. 在左侧导航栏中单击应用设置,并在右侧单击自定义配置页签。
  4. 自定义配置页签的CPU&内存诊断区域,打开总开关,并设置IP白名单IP范围
  5. 自定义配置页签左下角单击保存

查看CPU&内存诊断数据

  1. 登录ARMS控制台,在左侧导航栏选择应用监控 > 应用列表
  2. 应用列表页面顶部选择目标地域,然后单击目标应用名称。
  3. 在左侧导航栏中单击CPU&内存诊断
  4. 在左侧实例列表中选择目标实例,然后在右侧页面设置数据展示时间。
    CPU&内存诊断
  5. 在右侧数据展示区域,您可以执行以下操作筛选数据并查看聚合分析。
    数据展示
    1. 时间窗口大小区域(图示①)选择快照时间大小,然后在曲线图上通过鼠标拖拽选择快照时间范围。
    2. 在图示②的下拉框可以选择数据类型:CPU情况、JVM Heap、JVM GC。
    3. 在图示③区域显示了快照时间范围内的数据列表,单击右上角的聚合分析可以查看快照详情。
      图 1. 性能分析
      性能分析
      图 2. 指标列表
      指标列表
      图 3. 快照列表
      快照列表