👉目录
1 为什么要做防劣化
1.1 如何破局
1.2 我们的口号:Hold the door!
2 防劣化系统的实现
2.1 方案设计
2.2 数据采集
2.3 任务调度
2.4 数据处理
2.5 管理端展示
2.6 整体架构
3 收益与总结
从验证可行性跑通最小闭环,到搭建群控机架一次次为集群扩容,实属不易。其中涉及到大量的方案讨论甚至推翻,很多思路和实现细节是业界找不到公开方案的,只能自己摸索。本文详细分享了手 Q 防劣化系统的构建链路,相信对业界和开发者们都有较高的借鉴意义。
01
代码体量较大:业务涵盖 IM/空间/短视频/超级 QQ 秀等。 迭代需求紧:双周迭代,研发人员多;每版本几十条需求分支,主干每周构建出包数百次。 问题较多:需求合流新增性能问题多,基础侧人力寡不敌众,问题越堆越多,事后回溯效率低。
主干合流门禁:对于较稳定的性能指标,合流前自动检查。 日常自动提单:针对偶现的性能问题,开发阶段提前发现。 性能数据看板:常态化详细数据看板,上帝视角观测性能。 告警机器人:自定义各性能维度告警规则,第一时间发现问题。
02
性能测试和性能报告创建审批左移到开发阶段。 覆盖场景可拓展:测试用例云端独立管理派发。 性能维度可拓展:支持 Instruments 所有模板。 静态检查可拓展:构建数据服务端存储与比对。
传统的自动化性能测试平台和工具的报告只有 metric 统计数据和 App 截图/日志,信息太少不足以定位问题。 APM 平台的线上监控很强大,但无法动态追踪采集 time profiler 等详细数据。
通过 Instruments 动态追踪技术采集 diagnostic 诊断数据,无侵入性。 xctrace 自动解析 trace 文件,翻译堆栈精准归因,还原『案发现场』。 每次提交构建均执行防劣化检测,精准定位问题的提交引入者。 数据可视化看板+自动提单派发+大模型 AI 分析问题 = 测开降本增效。
需要有详细的堆栈信息; 性能维度足够多; 最好非侵入式的; 容易与 CI 流程相结合。
和 Instruments 高度契合,Instruments 有 os_signpost 模板,应用内使用 signpost 相关接口打的点,在 Instruments GUI 展示性能数据时,也能将业务打点一并展示,方便排查问题; signpost 打点数据可以使用 xctrace 进行导出,可以实现业务场景和性能数据的相关联; 相比 print 打点方式,signpost 性能损耗更低。
对于 Crash 任务,为了保证能第一时间发现问题,会分配专门的机器池进行测试。 对于性能任务,根据版本流程与任务优先级进行动态分配。基础性能>业务自定义>=专项测试>闲时利用。
03
📢📢欢迎加入腾讯云开发者社群,享前沿资讯、大咖干货,找兴趣搭子,交同城好友,更有鹅厂招聘机会、限量周边好礼等你来~
(长按图片立即扫码)
本篇文章来源于微信公众号: 腾讯云开发者
本文来自投稿,不代表TakinTalks稳定性技术交流平台立场,如若转载,请联系原作者。