性能监控

最近更新时间:2024-01-31 16:05:21

我的收藏
您可以通过本文了解页面测速、接口测试、资源测速的统计方式和传入配置等信息。

页面测速

说明
RUM 默认为您开启页面测速功能。
当您成功安装和初始化 SDK 后,Aegis 实例默认会上报以下指标:
1. DNS 查询:domainLookupEnd - domainLookupStart;
2. TCP 连接:connectEnd - connectStart;
3. SSL 建连:requestStart - secureConnectionStart;
4. 请求响应:responseStart - requestStart;
5. 内容传输:responseEnd - responseStart;
6. DOM 解析:domInteractive - domLoading;
7. 资源加载:loadEventStart - domInteractive;
8. 首屏耗时:监听页面打开3s内的首屏 DOM 变化,并认为 DOM 变化数量最多的那一刻为首屏框架渲染完成时间(SDK 初始化后 setTimeout 3s 收集首屏元素,如果 3s 内获取不到首屏,则会继续执行一次 3s 再次获取。 由于 JS 是在单线程环境下执行,收集执行的时间点可能大于 3s),同时因为首屏接口是以上 8 个数据全部都获取完成后才上报,所以也有可能 6s 后 DOM 解析 或者 资源加载 的值还没获取到,导致又执行 3s 去获取这两个值。首屏耗时在 0 - 15s 的值为有效值,其它值认为是非法值。
9. 页面完全加载时间:为1-7项(DNS 查询、 TCP 连接、SSL 建连、请求响应、内容传输、DOM 解析、资源加载)时间总和;
说明
1-7 项页面打开性能指标计算说明可从 PerformanceTiming 获取。首屏耗时对应的 DOM 元素,可以通过打印 aegis.firstScreenInfo 查看。如果 DOM 元素不能代表首屏,可以添加属性<div aegis-first-screen-timing></div>,把某个元素识别为首屏关键元素,SDK 认为只要用户首屏出现此元素就是首屏完成。也可以添加属性<div aegis-ignore-first-screen-timing></div>,把该 DOM 列入黑名单。
根据以上数据,前端性能监控为用户绘制了页面加载瀑布图:



说明
总体来说,页面首屏和页面完全加载时间是正相关的。大多数情况下,用户的首屏时间是小于页面完全加载的。Aegis SDK 根据用户页面 DOM 变化计算首屏时间,如果用户页面完全加载后,还继续发生 DOM 变化,就有可能发生首屏时间晚于页面完全加载的情况。
在服务端场景,瀑布图会出现首屏时间大于 DOM 解析的情况,这是由于移动端设备兼容性问题,有些设备无法获取到 DNS 查询、TCP 连接、SSL 建连时间,这三个指标汇总后的平均值偏小,导致除了首屏时间外的其他指标都往左偏移。
如果用户发现 RUM 性能数据里面首屏耗时大于页面完成加载的问题,并且上报的 performance 接口中 firstScreenTiming 为 0 还有可能是 SDK 初始化太晚导致的,如果 SDK 初始化的时候,页面首屏已经完成了,就没办法获取到正常的 firstScreenTiming 的值。建议用户把 SDK 初始化放在 head 中进行,尽早初始化,然后再确认上报数据是否正常。

接口测速

说明
打开方式:初始化时传入配置 reportApiSpeed: true
Aegis 通过劫持 XHRfetch 进行接口测速。

资源测速

说明
打开方式:初始化时传入配置 reportAssetSpeed: true
Aegis 通过浏览器提供的 PerformanceResourceTiming 进行资源测速。