前端高并发可观测性:别等用户截图才知道页面炸了
前端高并发页面最怕“后端指标正常,用户说卡爆了”。秒杀、直播、活动页、控制台大屏,都可能出现 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



