关注

前端高并发可观测性:别等用户截图才知道页面炸了

前端高并发可观测性:别等用户截图才知道页面炸了

前端高并发页面最怕“后端指标正常,用户说卡爆了”。秒杀、直播、活动页、控制台大屏,都可能出现 JS 错误、资源加载失败、接口排队、渲染阻塞、白屏和交互延迟。只看服务端 QPS 和错误率不够,前端必须有自己的可观测性。

别等用户截图才知道页面炸了。前端要能回答:谁受影响、哪一步慢、哪个资源失败、哪个版本引入问题。

一、前端观测要覆盖四类信号

flowchart TD
  A[Browser] --> B[Errors]
  A --> C[Performance]
  A --> D[Resource]
  A --> E[User Action]
  B --> F[Observability Backend]
  C --> F
  D --> F
  E --> F

错误、性能、资源、用户行为缺一不可。只有错误日志,看不到慢;只有性能指标,看不到失败;只有埋点,看不到技术根因。

二、核心指标要贴近用户体验

前端指标别堆一堆没人看的曲线。高并发场景先看白屏率、JS 错误率、接口失败率、LCP、INP、资源加载失败率。

const report = (type, payload) => {
  navigator.sendBeacon('/rum', JSON.stringify({
    type,
    ts: Date.now(),
    release: window.__APP_VERSION__,
    route: location.pathname,
    ...payload
  }));
};

window.addEventListener('error', event => {
  report('js_error', { message: event.message, source: event.filename });
});

上报要带版本、路由、设备、网络类型和采样策略。不带版本的错误日志,回滚时会很痛苦。

三、高并发页面要做降级观测

活动页不只要知道“成功加载”,还要知道降级是否生效。比如 CDN 资源失败后是否切备用域名,接口超时后是否展示排队态,图片加载失败后是否用占位。

{
  "event": "degrade_triggered",
  "reason": "api_timeout",
  "route": "/sale",
  "fallback": "queue_page",
  "duration_ms": 1800
}

降级没有观测,就等于没有降级。你不知道它触发了多少次,也不知道它有没有救到用户。

四、前后端链路要能对上

前端请求要带 trace id,后端日志和链路追踪才能串起来。否则用户说“支付按钮转圈”,后端只能在海量日志里捞针。

const traceId = crypto.randomUUID();
fetch('/api/order', {
  headers: {
    'x-trace-id': traceId
  }
});
report('api_call', { trace_id: traceId, api: '/api/order' });

有了 trace id,前端错误、接口耗时、后端日志、网关指标才能拼成一条完整链路。

五、总结

前端高并发可观测性要覆盖错误、性能、资源和用户行为,核心指标贴近用户体验,降级路径也要上报,前后端通过 trace id 串联。

高并发不是后端一个人的战场。用户看到的是页面,页面炸了就是系统炸了。把前端观测补齐,才能在用户截图之前发现问题。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2609_95049439/article/details/162549353

文章来源crawl

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--