前端可观测性

打印 上一主题 下一主题

主题 968|帖子 968|积分 2904

前言
可观测性满足的是如何使团队可以或许辨认先前已知和未知的问题。其实重点还是在于探索了解系统的未知问题。今日前端早读课文章由 @刘刚分享。
正文从这开始~~
如何通过观测云提升用户体验,要深入讲性能优化,可能必要的时间远远不是短短这次交流,前端性能优化范围很广,本日把我这几年前端研发工作的实践、阅读的书,以及在过程中的一些思考,抛砖引玉,渴望对大家有所启发。


可观测性的引入

Gartner 在 10.18 日发布企业机构在 2023 年必要探索的十大战略技术趋势,Gartner 2023 年战略技术趋势围绕优化、扩展和开拓这三大主题,这些技术可以或许帮助企业机构优化韧性、运营或可信度、扩展垂直解决方案和产品交付并利用新的互动形式、更加速速的响应或机会进行开拓。”
【图书】可观测性工程


在 Gartner 的这个陈诉中显示,应用可观测性排行第二。
可观测性的应用可以或许是企业利用他们的数据获取竞争优势,它可以或许在正确的时间提高正确数据的战略重要性,以便根据确认的相关行动而不但仅是意图采取快速行动,因此是一种强大的工具。如果可以或许在战略中予以规划并成功实行,可观测性应用将成为数据驱动型决策的最强大来源。可观测性这么重要,那么到底什么是可观测性呢

可观测性的先容

CNCF 早在定义云原生的概念时就提到了可观测性 ,它声称可观测性是云原生时代的必备能力。可观测性是通过技术手段引导系统从 不可预知性 去往 确定已知性 的 全新思维理念,当我们将可观测性的概念应用于软件系统时,主要是为了:了解应用程序的内部运行情况。简单的说,可观测性是一种度量能力,帮助使用者可以或许更好的理解息争释系统当前所处的任何状态,无论你之前是否碰到过或者这个状态有多奇怪。都有能力通过各种维度和各种角度去分析发现和理解这个系统当前所出现的状态,而不必要预先定义或预测那些调试需求。如果可以或许在不发布新代码(如增加一个用于调试的日志)的情况下理解任何奇怪或不确定性的状态,那么你的系统就具备可观测性。
管理学大师彼得・德鲁克:If you can't measure it, you can't improve it.“如果你不可以或许衡量,那你就不能有效的增长。”

前端可观测性的简介

了解应用程序可能得状态,这种可能是前端开发的同学没见过和无法预测的。举个简单的例子来说

随着网站交互的增多,网站的复杂度变高了,前端可观测性就更难做了。大多数前端同学能看到的是本地开发环境,我们可以或许根据经验设定一些指标的值来预警,虽然大多情况下并不能理解为什么发生了告警,尤其是对线上异常的解释,好比发现某个问题和某些东西相关,但是无法进一步分解定位到根因,那么更无法进行相对应的进行优化,无法到达线上可观测的目标。

首先必要讲的是产品或者系统的性能与系统稳定有关,常常会出现用户常常反应的一个情况,就是页面报错或者卡顿。但是因为设备不同、浏览器兼容、网络快慢、产品设计等原因,开发或者研发很少能复现。还有更常见的场景,便是报错或者卡顿还没来得及上传到 RUM 系统或者反馈上来,用户已经流失了。很明显系统稳定跟留住用户有关,系统报错与用户体验有关,用户体验跟用户增长有关。而且通常前端开发工程师的一个难题是,能否快速定位系统性能问题是发生在前端这一侧每一个用户实际哀求所产生的性能问题导致的缓慢,还是其他环节呢?


要解决这个问题,首先必要尽可能多的收集变乱的详细信息,对数据进行聚合分析,并采取相应的行动。但首先收集上来的数据量级巨大,
这些聚合的数值并不能告诉我们更多的信息,让我们了解在相应的系统中发生了什么 —— 它们不会告诉你是哪些过程导致了这种状况,
为了缓解高基数数据量带来的无法快速定位构建可观测性的难题,一种解决办法是使用仪表盘,通过仪表盘能了解系统的运作状态,最重要的是,可以或许对指标的值有所了解,而且能清楚的了解指标的趋势。如果仪表盘界面上增加了过滤器和下钻,让你可以更深入和缩小可视化,以提供更多的分析故障的能力。当前服务收集的各种指标是无法在一个仪表盘中进行展示的,各个角色的人也有个各自的需求,后面我将同时展示一些相关的图表。
可观测性满足的是如何使团队可以或许辨认先前已知和未知的问题。其实重点还是在于探索了解系统的未知问题。
观测云能提升用户体验,他具备丰富的追踪能力,能利用精准的用户会话数据,对网站进行详细的分析,并通过强大的仪表进行展示。








阈值检测:基于设置的阈值对指标数据进行异常检测,当数据到达阈值时,触发告警并通知用户。
突变检测:基于比较两个不同时间段内同一个指标的绝对或相对(%)变化值来判断是否产生异常情况。多应用于追踪某个指标的峰值或者数据变化,当出现异常情况时可以更精准的产生变乱留做记载。

现在开始这次对提升性能的第一个实践和经验分享,便是 FCP。
FCP 是早期性能指标发展中比较早的一个指标,在常见的 client-side-rendering 场景中的 spa 架构中,因为 body 下 id 为 app 的 div 的渲染的结束,导致 fcp 通常大于等于 first paint,FCP 更得当在 ssr 场景中对初次内容渲染后用于衡量网站的加载体验,如在 ssr 的网站性能监控中,就比较发起针对 FCP 做告警设置。虽然 fcp 对于提升网站提升有效,但这个指标对于用户真实体验有较大的差别。fcp 和真实发生的页面渲染之间往往还存在着网络资源队列处理哀求、资源解析和 dom 的实际渲染中特别多的因素,随着页面内容复杂度攀升,当前渲染页面是否允许用户操作,页面渲染是否令人愉悦,但随着将 rendering 更多的放在浏览器侧,Fcp 已经远远不能满足用户体验对性能检验的需求。便是本日还要跟大家分享在实践中必要关注的几个指标。

核心指标及实践

本日跟大家聊一聊几大核心指标,首先是这些指标的含义,和指标如何解读,还有这些核心指标的影响因素。

这三大指标分别是从页面加载、用户交互以及视觉稳定性的角度入手。这个有点类似谷歌 2022 开发者大会的数据,但又不完全一样,主要是 long task 和 errors,后面我也会根据观测云的仪表来给大家展示,

度量 loading 的指标

LCP 是一项以用户为中心的指标,用于衡量网页被感知到的加载速度,指的是可见的最大内容元素的渲染时间;
如图中所示,LCP 应该在页面初次开始加载的 2.5 秒内,超过 2.5sLCP 则被定义为 poor;
我们来查看一下 LCP 的影响因素呢,当用户访问一个网站,从端上发起哀求后通常有好几个阶段,一样平常浏览器都不知道接下来要用什么内容,可能是 css、js、字体和图片、或者音视频,其中浏览器大部门时间都花在等候服务器的数据。从端上传输到服务器,然后再返回设备。如果能预拉取这些内容,那么能极大的提高加载速度,即使只是预先拉取部门文件,也能有很显著的网页速度提升。
观测云推荐用户可以或许预拉取部门文件,预拉取部门文件应该是常用、公共、有良好缓存策略的文件。
当然这部门还是要根据业务和用户的需求来决定。如何能提前预提取呢。对此我想先容两个可供参考的,能简单快捷的使用,并且对 LCP 和网站速度有明显提升。

如何提升 lcp


这两项是技术基本都是很多年前就有,但常常被用户忽略的。
第一点是 让页面提前可与目标网站建立直接毗连来获取资源。由于这些哀求每次都会发送到你的服务器,因此可以或许提高向用户显示的内容的速度。一次 DNS 查询的平均时间大概是 60-120ms 左右,看似一个很短的时间,但是相对于网页的渲染来说,这是一个非常长的时间。DNS 预取技术是利用 CPU 和网络带宽来域名解析机制,可以针对多个域名采取并行处理的方式,每个域名开启一个新的线程。信息告诉浏览器,必要做 dsn 预解析 使用 link 标签对后端 api 进行预解析,尤其对于 client side rendering 的架构来讲,在已经构建完空白节点后在由 client fire http request 时建立毗连其实已经滞后很多。
第二点是预拉取在 meta 标签内 Preload source,是声明式的 fetch,可以强制浏览器哀求资源,同时不阻塞文档 onload 变乱。Prefetch 提示浏览器这个资源未来可能必要,但是把决定是否和什么时间加载这个资源的决定权交给浏览器。
<link Fetchpriority=“high” rel=“preload” href=“resource.jpg”> Preload 原来是一个专门针对音视频进行优化的一个标签,现在可以用对静态资源、关键公共 js css 字体进行加载的一项技术
【第1159期】CSS预加载Preload

以上便是一些实践中对于提升 lcp 有帮助的一些经验。
除了以上的这些内容,还有什么能影响 LCP 呢,一样平常是服务器响应慢、js 阻塞、资源加载慢、客户端渲染架构。
这里必要讲到服务器响应慢、资源加载慢,
现在观测云能全链路展示耗时占比,如果是服务器响应慢,则能快速看出来。
资源加载慢,观测云有两个字段对大家做性能调优有帮助。第一个是 view_resource_count 页面资源数目,第二个是 resource_size。
一样平常情况下浏览器会限制同一个域名下可以下载资源的数目,以 chrome 为例,在建立毗连阶段客户端最多与主机建立 6 个 tcp 毗连,通过划分子域方式,将多个资源分布在不同子域上,淘汰哀求队列的等候时间,这也算得上一种优化的方式。
根据从观测云得到的 view_resource_count 数目,可以做数目淘汰的尝试。好比从 100 到 40。这也好坏常值得尝试的性能提升。
末了一点便是 reduce resource size,可以做大小降低上的尝试。好比从 3M 到 1.5M。这也好坏常值得尝试的性能提升。
交互




Cls 是衡量视觉稳定性非常重要的指标,它可以量化在页面上布局累计偏移的最终效果,它可以衡量页面是否令人愉悦,
一样平常 CLS 应该在 0.1 以下,如果超过这个数值,就必要关注一下这个指标。
什么情况下会导致 CLS 比较差呢?
一样平常是没有尺寸的图像 / 视频的 dom 节点(这里尤其必要思量 css embeded 到 js 中的场景有可能会让 cls 比较低),不设置宽高的大 div,以及字体文件突然加载的闪烁。而且可以通过 chrome 的 devtools 可以或许直接看到对 cls 影响比较大的 dom 节点。对于 lazy-load 的 image/video 节点,可以设置多套尺寸,可以或许降低 cls。也可以使用类似于骨架屏的策略,对这些节点的样式进行预设。
还有一种情况,就是长列表下滑场景,必要包管盒模型有充足的空间切换,也就是不论盒模型内数据如何变化,都要始终预留出数据变更所必要的布局空间。总之,通过努力,我们以为 CLS 这个数值,是有机会不断接近 0 的。





“观测云” 内置 20 余种尺度的可视化图表:包括 时序图、概览图、表格图、矩形树图、漏斗图、饼图、柱状图、直方图、SLO、排行榜、仪表盘、散点图、气泡图、中国地图、天下地图、蜂窝图、文本、图片、视频、命令面板、IFrame、日志流图、对象列表图、告警统计图 等,可快速根据不同业务需求快速创建不同的仪表板,满足对数据个性化、全面的展示需求。
时序图一样平常用于显示数据在相等时间间隔下的趋势变化,同时可以用来分析多组指标数据之间的作用及影响。

好比我们以时序图为例。时序图一样平常用于显示数据在相等时间间隔下的趋势变化,同时可以用来分析多组指标数据之间的作用及影响。这里能看到观测云控制台的核心指标 FCP 基本在 2s 的箱体

这里能看到观测云控制台的核心指标 LCP 基本在 2s 的箱体,存在部门波动。

矩形树图用于展示不同分组下指标数据的占比分布可视化。这里能看到观测云控制台的核心指标 LCP 基本在 2s 的箱体,存在部门波动。


矩形树图用于展示不同分组下指标数据的占比分布可视化。这里能看到观测云控制台的核心指标 LCP 基本在 2s 的箱体,存在部门波动。

这里可以通过这张图片能看出什么来呢?这是观测云控制台在阿里云的数据。团体来看不论是页面切换,还是初次加载,cls 团体绝大多数情况都在 0.1 以下,团体性能数据还是不错的,但是有明显超过 0.1 的情况存在。

让我看一下官网的数据,这里可以通过这张图片能看出什么来呢?团体来看不论是页面切换,还是初次加载,cls 团体绝大多数情况都在 0.1 以下,但是有明显超过 0.1 的情况存在。

关于本文
作者:@刘刚
原文:https://juejin.cn/post/7157330444906659877

这期前端早读课
对你有帮助,帮” 赞 “一下,
期待下一期,帮” 在看” 一下 。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

飞不高

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表