Skip to Content
产品功能性能监控(APM)

性能监控(APM)

除崩溃外,性能问题是中小团队第二大痛点。Argus 的应用性能监控(Application Performance Monitoring,APM)采集端上启动时长、卡顿 / FPS、网络请求、内存四类指标,在 Console 按均值与 百分位聚合,帮你发现”平均没问题、长尾很卡”的场景,并定位疑似内存泄漏的会话。

电量分析与 CPU 归因永久不在范围内ADR-0032 )。 APM 只做上述四类性能指标。

核心概念

指标类别采集内容说明
启动性能冷启动 / 热启动 / TTI(Time To Interactive,可交互时长)跨端锚点口径见 指标口径字典 
卡顿 / FPS单帧超过设备刷新率帧预算即为卡顿(Jank);主线程阻塞 ≥ 700ms 归一为 AppHangAndroid 系统级 ANR(5s)为独立事件 error_type=ANR
网络每次 HTTP 请求的 DNS / TCP / TLS / TTFB / 下载分阶段耗时、失败率、超时率按域名 / 接口维度聚合
内存使用峰值 / 平均、Android 内存细分、OOM 检测、内存泄漏会话识别泄漏识别为服务端对每会话 memory_mb 做线性回归取斜率

采样与聚合:高频指标(FPS 按 5s 窗口、内存按 ≥ 30s 间隔)在 SDK 内本地聚合后上报,而非逐帧 / 逐秒——既省电省流量,也避免打爆事件配额。采样率随事件一并上报,供服务端聚合时做权重还原。

接入

APM 由端上 SDK 自动采集,无需额外埋点。选择你的平台完成接入:

平台自动采集Quickstart
iOS启动 / 卡顿栈(AppHang)/ FPS / 网络 / 内存细分 / OOMiOS SDK
Android启动 / 卡顿栈 / FPS / 网络(OkHttp)/ 内存细分 / OOM / ANRAndroid SDK
WebWeb Vitals(LCP / INP / CLS)Web SDK

DSN 配置与签名机制见 DSN 与 HMAC 签名。所有采集均遵守 SDK 自保护基线 : 开启卡顿 / FPS 采集相对关闭时宿主 CPU 差 < 1%,网络 hook 抛异常也不阻断业务请求(fail-open)。

网络监控隐私:上报前对 URL 的 query string 与路径参数做脱敏(token / email / 手机号等命中 敏感模式的值会被 mask),默认不采集请求 / 响应 header 与 body;网络 hook 自动排除 Argus 自身 上报域名,避免递归观测。详见 隐私与合规基线 

Console 使用

打开 Console → APM/apm):

  1. 指标聚合表:每个 metric 一行,列出单位、样本数、avg、p50、p95、p99、min、max。看 p95 / p99 才能发现被均值掩盖的长尾卡顿——p99 列以红色高亮。
  2. 内存增长会话(疑似泄漏):按会话 memory_mb 增长斜率排序。内存增长有正常原因(缓存、资源 加载),此表只作排查线索,非确诊。
  3. 跳转链路:APM metric 本身不带 trace_id,页面提供「查看分布式链路(Traces)→」入口,进一步 到 分布式追踪 排查慢请求的完整调用链。

SDK API:自定义业务指标

除自动采集外,可上报自定义业务指标(如”商品列表加载时长”):

Argus.metric(name, value, tags)

上报后与内置指标一样进入 APM 聚合表。各端具体签名以对应平台 SDK README 为准。

MCP 工具

在 Claude / Cursor 里可用以下只读工具查询性能数据(详见 MCP Server):

工具用途
apm.stats按 metric 聚合 p50 / p95 / p99 与样本数
apm.search按维度(设备 / OS / 版本 / 网络类型)检索性能事件
apm.memory_growth列出疑似内存泄漏(增长斜率为正)的会话

配额与计费

1 个 APM 事件 = 1 个计量事件(含启动 / FPS / 网络 / 内存)。高频指标本地聚合后上报,网络明细默认 聚合、仅异常(失败 / 超时 / 慢请求)全量采集,避免逐请求明细打爆配额。计量口径见 套餐、配额与计费

常见问题

Q:为什么均值正常但用户还是觉得卡? 看 p95 / p99。均值会被大量正常帧摊平,真正的卡顿藏在长尾里。

Q:内存增长会话一定是泄漏吗? 不一定。斜率为正只说明该会话内存持续上涨,可能是正常缓存 / 加载。它是排查起点,不是结论。

Q:能做耗电分析吗? 不能,也不会做——电量与 CPU 归因是永久排除项。

Q:Web 端能采集启动时长吗? Web 侧采集的是 Web Vitals(LCP / INP / CLS),与移动端”点击图标到首屏”的冷启动口径不同,跨端对比 时注意可比性边界。