跳到主要内容

操作分析

功能概述

操作分析功能为产品和研发团队提供真实用户操作行为的性能监控和体验分析能力,帮助团队从用户视角发现性能瓶颈,优化交互体验。通过监控操作可用性、操作耗时、阻塞耗时等核心指标,结合完整的端到端链路追踪,支撑用户体验持续优化和问题快速定位。

核心价值

  • 用户体验量化:从真实用户操作视角衡量应用性能,而非单纯的技术指标
  • 端到端链路追踪:打通前端操作与后端服务,全链路性能分析
  • 业务价值关联:操作性能直接影响业务转化率、用户留存和满意度
  • 精准问题定位:定位到具体操作、具体用户、具体环境的性能问题

什么是操作

操作是用户与应用交互的核心行为,包括点击、滑动、长按等手势操作。每次操作会触发一系列前端处理和后端请求,操作性能直接影响用户体验。

操作分析关注

  • 操作是否可用(无崩溃、无错误)
  • 操作是否流畅(无卡顿、响应快)
  • 操作的性能瓶颈在哪里(前端、网络、后端)

使用场景

场景一:业务转化率优化

核心业务流程(如下单、支付)操作缓慢或失败,影响转化率。

实践案例

  • 发现"立即购买"按钮操作耗时 5s,流畅操作占比仅 40%
  • 通过操作详情定位到商品库存查询接口耗时 3s
  • 优化接口后操作耗时降至 1.2s,流畅操作占比提升至 95%
  • 订单转化率提升 18%

场景二:用户体验问题排查

用户反馈"点击没反应"或"应用卡住了",需快速定位问题。

实践案例

  • 用户投诉某功能点击后无响应
  • 操作分析发现该操作卡顿率 25%,阻塞耗时达 8s
  • Trace 追踪发现主线程在执行大量图片处理
  • 优化为异步处理后,卡顿率降至 2%

场景三:版本性能对比

新版本发布后,对比操作性能变化,评估用户体验影响。

实践案例

  • 新版本"搜索"操作耗时从 800ms 增加到 2.1s
  • 操作详情显示新增的推荐算法耗时过长
  • 及时优化算法,避免影响 500 万用户体验

核心指标说明

性能指标

指标说明计算方式优秀标准
操作耗时操作的总耗时(包含异步方法)从用户触发到操作完成的时间< 1s
阻塞耗时操作入口函数的执行耗时主线程被阻塞的时间< 300ms
操作次数操作执行的总次数统计时间段内的操作总数-
活跃设备数执行该操作的唯一设备数去重统计-

可用性指标

指标说明计算公式优秀标准
可用性操作成功执行的比例可用操作次数 / 总操作次数> 99%
失败操作请求错误率达 100% 的操作操作中所有请求都失败< 0.5%
崩溃操作操作过程中应用崩溃操作触发崩溃的次数< 0.1%

体验指标

指标说明计算公式建议值
流畅操作占比操作耗时在阈值内的比例流畅操作次数 / 总操作次数> 90%
慢操作占比操作耗时超过阈值的比例慢操作次数 / 总操作次数< 5%
卡顿操作占比阻塞耗时超过阈值的比例卡顿操作次数 / 总操作次数< 3%

阈值设置:默认阈值为 3s,可在全局设置中根据应用类型调整。建议:工具类 < 2s,内容类 < 3s,游戏类 < 1s。

操作标识

Android 平台

属性说明示例
操作名称类名 + 控件 IDMainActivity#btn_login
所属页面Activity 或 Fragment 名称LoginActivity

iOS 平台

属性说明示例
操作名称类名 + 方法名ViewController#loginButtonTapped
所属页面ViewController 名称LoginViewController

支持的操作类型

Android 操作事件

点击事件

  • onClick - 按钮、视图点击
  • onItemClick - 列表项点击
  • ItemSelected - 下拉选择
  • PageSelected - 页面切换

iOS 操作事件

手势操作

  • UITapGestureRecognizer - 单击
  • UILongPressGestureRecognizer - 长按
  • UISwipeGestureRecognizer - 轻扫
  • UIPanGestureRecognizer - 拖动
  • UIPinchGestureRecognizer - 双指捏合
  • UIScreenEdgePanGestureRecognizer - 边缘滑动

控件事件

  • UITableView-didSelectRowAtIndexPath - 表格选择
  • UICollectionView-didSelectItemAtIndexPath - 集合视图选择
  • UIPickerView-didSelectRow - 选择器选择

核心功能

1. 操作概览

过滤维度

支持多维度数据过滤,精准定位问题范围:

  • 设备维度:设备名称、设备型号
  • 应用维度:App 版本
  • 系统维度:操作系统、操作系统主版本
  • 地域维度:国家、省/州、城市、运营商
  • 网络维度:接入方式(WiFi、4G、5G 等)

指标趋势分析

展示操作性能指标的时间趋势,支持多指标对比:

耗时类指标

  • 支持查看:平均值、P50、P75、P95、P99
  • 默认展示:P75(75% 用户的体验水平)
  • 建议关注:P95、P99(长尾用户体验)

可用性指标

  • 操作可用性、失败操作占比、崩溃操作占比
  • 流畅操作占比、慢操作占比、卡顿操作占比

业务指标

  • 操作次数、活跃设备数、每分钟操作次数

分析技巧:P75 看整体,P95/P99 看长尾。耗时突增时,对比可用性指标判断是性能问题还是异常问题。

地域分布分析

通过地图可视化展示操作性能的地域分布:

  • 地图下钻:支持从国家下钻到省/州
  • 自动过滤:下钻后自动添加地域过滤条件
  • 指标切换:可切换不同指标查看地域分布
  • 列表自定义:支持自定义表头显示关注的指标

应用场景

  • 发现特定地区性能问题(如某省操作耗时明显偏高)
  • 对比不同地区的用户体验差异
  • 评估区域性优化效果

2. 关系

展示操作与后端服务的完整链路,帮助分析端到端性能瓶颈。

操作维度

操作列表展示所有用户操作的性能数据:

核心指标

  • Mobile 操作、所属页面、操作次数
  • 操作耗时、阻塞耗时、请求耗时
  • 操作可用性、请求错误率
  • 流畅/慢/卡顿/失败/崩溃操作占比

分析要点

  • 操作可用性 < 99%:优先排查失败和崩溃原因
  • 慢操作占比 > 10%:需要性能优化
  • 卡顿操作占比 > 5%:检查主线程耗时操作

操作详情入口:点击操作名称进入单个操作的详细分析页面。

请求接口维度

展示数据类请求(mime-type 为 text 或 json)的性能数据:

关键指标

  • HTTP 请求、请求次数、请求耗时
  • TTFB(首字节时间)、DNS/TCP/SSL 耗时
  • 请求错误率、网络错误率
  • 服务端链路追踪耗时、吞吐率
  • 上行/下行流量消耗

分析方向

  • 请求耗时高:查看是网络层(DNS/TCP/SSL)还是服务端问题
  • 错误率高:区分 HTTP 错误(4xx/5xx)和网络错误(超时、连接失败)
  • 慢请求占比高:评估是否需要接口优化或降级

详情入口:点击 HTTP 请求进入请求详情分析。

资源接口维度

展示资源类请求(图片、JS、CSS 等静态资源)的性能数据:

分析重点

  • 资源加载耗时:影响页面渲染速度
  • 传输数据量:评估资源优化空间(图片压缩、懒加载)
  • CDN 性能:通过 CDN 分析优化资源分发

优化建议

  • 图片资源:使用 WebP 格式,按需加载
  • JS/CSS:合并压缩,按需分包
  • 大文件:启用 CDN 加速

服务维度

展示后端服务的性能数据(需后端嵌入 APM 探针):

端到端分析

  • 前端操作耗时 vs 后端服务耗时
  • 定位瓶颈是在客户端、网络还是服务端
  • 评估服务端优化对用户体验的影响

关键指标

  • 后端服务名称、请求次数
  • 服务端响应耗时
  • 服务端链路追踪错误率

价值:打通前后端,实现真正的全链路性能分析。

CDN 维度

展示各 CDN 厂商的性能表现:

对比分析

  • 不同 CDN 厂商的性能差异
  • 特定操作使用的 CDN 分布
  • CDN 对操作性能的影响

优化方向

  • 选择性能最优的 CDN 厂商
  • 按地域调整 CDN 策略
  • 评估 CDN 成本与性能的平衡

3. 操作详情

指标趋势

展示单个操作的性能指标时间趋势:

  • 操作耗时、阻塞耗时、请求耗时
  • 操作可用性、错误率、崩溃率
  • 流畅/慢/卡顿操作占比变化

分析场景

  • 操作耗时突增:对比代码变更或后端变更
  • 可用性下降:查看错误率和崩溃率的变化
  • 特定时间段异常:结合业务活动或版本发布分析

地域分布

单个操作在不同地域的性能表现:

  • 发现区域性问题
  • 对比不同地区的性能差异
  • 评估区域优化效果

关系

展示单个操作的完整调用链路:

  • 请求接口:该操作涉及的所有数据请求
  • 资源接口:该操作加载的所有静态资源
  • 服务:该操作调用的所有后端服务
  • CDN:该操作使用的 CDN 分布

价值:全面了解单个操作的性能全貌,定位具体瓶颈环节。

单样本详情

展示该操作所有单次执行的详细数据:

列表信息

  • 时间戳(timestamp)
  • 终端用户唯一标识、会话 ID
  • 操作耗时、操作请求次数
  • 地理位置(国家、省/州、城市)
  • 设备信息、网络信息

功能特性

  • 过滤:支持按 userID、会话 ID 过滤
  • 导出:支持导出单样本数据用于离线分析
  • 自定义:支持自定义表头显示关注字段
  • 跳转:点击会话 ID 跳转到会话详情

Trace 详情追踪

点击 timestamp 进入操作的完整 Trace 追踪:

1. 请求瀑布图

  • 以瀑布图形式展示操作过程中的所有请求
  • 支持按请求类型过滤(XHR、Fetch、资源等)
  • 支持搜索请求 URL
  • 直观展示请求并发情况和耗时分布

2. 元素统计

  • 按请求类型统计请求数量
  • 按域名统计请求数量和传输大小
  • 识别高频域名和大流量资源

3. 上报信息

  • 展示该 Trace 的原始数据
  • 用于深度排查和数据验证

分析价值

  • 串行请求优化:发现可以并行的串行请求
  • 资源优化:识别不必要的请求或过大的资源
  • 缓存优化:发现可以缓存的重复请求
  • 域名收敛:减少 DNS 查询次数

性能优化指南

常见操作性能问题

问题一:操作耗时过长

现象:慢操作占比高,用户感知响应慢

常见原因

  • 串行请求过多,请求链路长
  • 主线程耗时操作导致阻塞
  • 后端接口响应慢
  • 大数据量渲染耗时

优化建议

  1. 请求优化

    • 合并请求,减少请求数量
    • 请求并行化,避免串行等待
    • 预加载关键数据
    • 非关键数据异步加载
  2. 渲染优化

    • 分批渲染大数据量
    • 虚拟列表技术
    • 骨架屏提升感知速度
  3. 代码优化

    • 耗时操作移至后台线程
    • 减少不必要的计算
    • 优化算法复杂度

问题二:操作卡顿

现象:卡顿操作占比高,阻塞耗时长

常见原因

  • 主线程执行耗时操作(I/O、计算)
  • 频繁的 UI 刷新
  • 同步网络请求
  • 大对象序列化/反序列化

优化建议

  1. 异步处理

    • 所有耗时操作异步执行
    • 使用协程或异步队列
    • 避免阻塞主线程
  2. UI 优化

    • 减少布局层级
    • 避免过度绘制
    • 合理使用硬件加速
  3. 数据处理

    • 分批处理大数据
    • 使用流式处理
    • 优化序列化方式

问题三:操作失败率高

现象:操作可用性低,失败操作多

常见原因

  • 接口错误率高
  • 网络环境差
  • 参数校验失败
  • 业务逻辑问题

优化建议

  1. 容错处理

    • 添加重试机制
    • 降级方案
    • 友好的错误提示
  2. 接口优化

    • 提升接口稳定性
    • 参数容错处理
    • 版本兼容性
  3. 网络优化

    • 弱网优化(超时、重试)
    • 离线缓存
    • 数据预取

最佳实践

1. 核心操作识别

识别方法

  • 业务转化路径上的关键操作(下单、支付、注册)
  • 高频操作(首页刷新、搜索、列表滚动)
  • 用户投诉较多的操作

监控策略

  • 核心操作设置更严格的性能阈值
  • 建立核心操作的性能基线
  • 设置告警规则,及时发现问题

2. 分层性能分析

三层分析法

  1. 操作层:整体性能概况

    • 识别慢操作、卡顿操作
    • 对比不同操作的性能
  2. 请求层:网络性能分析

    • 定位慢请求、错误请求
    • 分析前端调用后端的性能
  3. Trace 层:单次执行详情

    • 瀑布图分析请求关系
    • 定位具体的性能瓶颈

3. 全链路协同优化

前端优化

  • 减少主线程耗时
  • 优化渲染性能
  • 合理使用缓存

网络优化

  • 请求合并与并行
  • CDN 加速
  • 弱网优化

后端优化

  • 接口性能优化
  • 数据库查询优化
  • 缓存策略

关键:通过操作分析的端到端视图,协同前后端团队共同优化。

4. 持续监控与改进

建立基线

  • 为核心操作建立性能基线
  • 定期(周/月)review 性能趋势
  • 版本发布时对比基线数据

告警机制

  • 操作可用性 < 99%
  • 慢操作占比 > 10%
  • 卡顿操作占比 > 5%
  • 操作耗时较基线退化 > 20%

常见问题 FAQ

Q1:为什么操作耗时和阻塞耗时差异很大?

A:这是正常现象,两个指标的含义不同:

  • 操作耗时:完整的操作时间,包括异步操作

    • 示例:点击按钮 → 发起请求 → 收到响应 → 更新 UI
    • 包含网络等待时间
  • 阻塞耗时:入口函数执行时间,只包括同步操作

    • 示例:点击按钮 → 入口函数执行 → 发起请求(异步)
    • 不包含异步等待时间

判断标准

  • 阻塞耗时高(> 500ms):主线程有耗时操作,会卡顿
  • 操作耗时高但阻塞耗时低:可能是网络或异步处理慢

Q2:如何设置合理的操作耗时阈值?

A:根据应用类型和操作特点设置:

按应用类型

应用类型建议阈值说明
工具类应用1-2s用户对响应速度要求高
内容类应用2-3s可接受一定加载时间
电商类应用1.5-2s影响转化率,要求较高
游戏应用0.5-1s对流畅度要求极高

按操作类型

操作类型建议阈值原因
按钮点击1s即时反馈操作
列表刷新2s可能涉及网络请求
页面跳转1.5s影响使用流畅度
提交操作3s可能有复杂业务逻辑

Q3:操作失败是由什么引起的?

A:操作失败的定义是操作过程中所有请求的错误率达 100%

常见原因

  1. 接口问题(最常见)

    • 后端服务异常
    • 接口超时
    • 参数错误
  2. 网络问题

    • 用户网络不可用
    • DNS 解析失败
    • 连接超时
  3. 客户端问题

    • 请求被拦截
    • 签名错误
    • 权限不足

排查方法

  1. 查看请求错误率:区分是网络错误还是 HTTP 错误
  2. 查看 Trace 详情:定位具体失败的请求
  3. 查看设备/网络分布:是否特定环境问题

Q4:如何分析操作性能突然变差?

A:系统化排查流程:

1. 确认影响范围

  • 是所有操作还是特定操作?
  • 是所有用户还是特定用户群体?
  • 什么时间开始的?

2. 对比关键维度

  • 版本对比:是否新版本引入?
  • 地域对比:是否特定地区?
  • 时间对比:是否特定时间段?

3. 分析变化原因

  • 代码变更:检查最近的代码发布
  • 配置变更:检查服务端配置调整
  • 外部依赖:检查 CDN、网络、后端服务

4. 定位具体瓶颈

  • 查看请求瀑布图:网络问题?
  • 查看阻塞耗时:主线程问题?
  • 查看后端耗时:服务端问题?

Q5:Trace 瀑布图如何分析?

A:瀑布图分析要点:

1. 关注串行请求

不好的模式(串行):
请求1 ——————
请求2 ——————
请求3 ——————

优化后(并行):
请求1 ——————
请求2 ——————
请求3 ——————

2. 识别关键路径

  • 找出最长的请求链路
  • 优先优化关键路径上的慢请求
  • 非关键请求可以延后或异步

3. 发现优化点

  • 重复请求:可以缓存
  • 大文件:可以压缩或分片
  • 慢域名:可以优化 DNS 或切换 CDN

4. 评估优化效果

  • 对比优化前后的瀑布图
  • 计算总耗时减少量
  • 评估对操作性能的影响