百万 QPS 前端性能监控系统设计与实现

作者:李振,腾讯云前端性能监控负责人

 

什么是前端性能监控(RUM)

腾讯云前端性能监控 (RUM) 是一站式前端监控解决方案,用户只需要安装 SDK 到自己的项目中,通过简单配置化,即可实现对用户页面质量的全方位守护,真正做到了低成本使用和无侵入监控。前端性能监控专注于 Web,小程序等大前端领域,主要关注用户页面性能(页面测速,接口测速,CDN 测速等)、质量(JS 错误,Ajax 错误等),并且通过联动腾讯云应用性能监控实现对前后端监控一体化的打通。点击了解 RUM 详情

前端性能监控技术架构历史

前端性能监控主要做日志和指标的综合处理,主要开发功能是 SDK + 接入层 + API 层 + 可视化。这看似简单的功能,会有什么难点呢?前端性能监控是如何实现的?

前端性能监控技术难点:高维数据的处理和高并发请求的处理。

高并发想必大家已经耳熟能详了,我们面对的是无数 C 端用户的数据收集和上报,业务数据的保障也会影响我们服务的稳定性。

高维数据可能大家都比较陌生,那么什么是高维数据呢?

比如你要计算某个页面在某个地区,某个机型,在某个运营商下的平均耗时,如果采用离线计算的方式,你需要提前把每个维度下的值计算出来,这样轻松就是几十亿上百亿的维度分布!

[点击查看大图]

前端性能监控最初架构

最早选择了前端同学最熟悉的 Node  + MongoDB + MySQL 的模式进行开发,底层是参考 BadJS(在线收集 JavaScript error 信息的插件) 的实现,并对其进行了无状态处理和容器化托管。

这套架构最主要的问题是性能瓶颈明显,而且没有办法进行指标计算。性能瓶颈主要在 MongoDB ,在写并发超过一定量级后,MongoDB  就无法承受数据写入了,即使做了读写分离。计算瓶颈主要存在于架构设计,主要实现流程如下:

这套架构强撑了我们很长一段时间,中间也做了无数优化,比如通过 “Node 分布式定时任务” 来增加计算能力,但是面对前端监控这种动辄几十亿上百亿的维度计算,根本无济于事。

穷则思变,既然现有架构没办法满足我们的诉求,就寻求新的技术方案。

分析日志存储问题

前端性能监控收集了很多用户的质量日志,包括:JS 错误,Promise 错误,AJAX 异常等,这些日志可以协助开发者快速定位问题,并且分析页面质量。将日志存储在 MongoDB 中的,好处是读写简单,搜索速度较快。但是日志上报量大了,使用 MongoDB 也成了性能瓶颈。

解决 MongoDB 使用问题

使用 MongoDB  我们最早遇到的是满容的问题,用户日志上报量大了,就把日志写满了。解决方案:把每个项目的数据单独存一个 Collection,把 Collection 设置为 “capped” 即为固定集合&

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值