技术分享:火山引擎如何助力飞书提升APP性能

企业动态
面临程序员同学的“痛苦”经历,作为 IT 管理者,是否想反手召唤一款神器,解决远程访问及办公软硬件等各种管理难题

通过使用火山引擎 MARS-APM Plus 的 memory graph 功能,飞书研发团队有效分析定位问题线上 case 多达30例,线上 OOM 率降低到了 0.8‰,降幅达到 60%。大幅提升了用户体验,为飞书的性能品质保驾护航。

1.应用程序稳定性是影响用户体验及留存的关键因素

对于移动 App 的开发者来说,最基础也是最关注的问题就是应用程序的稳定性。而崩溃问题是影响稳定性的重要因素, 包括 NSException、Signal、卡死、OOM(Out Of Memory) 等问题类型。其中,OOM 问题是随着业务的迭代,慢慢进入了开发者视野。

OOM 问题往往潜伏在复杂的业务背景下,复现困难且缺少有效的问题排查手段。目前在 iOS  端排查内存问题的工具主要包括 Xcode 提供的 Memory Graph 和 Instruments 相关的工具集,它们能够提供相对完备的内存信息,但是应用场景仅限于开发环境,无法在生产环境使用。由于内存问题往往发生在一些极端的使用场景,线下开发测试一般无法覆盖对应的问题,Xcode 提供的工具无法分析处理大多数偶现的疑难问题。

飞书是字节跳动旗下先进企业协作与管理平台,不仅包含一站式整合及时沟通、智能日历、音视频会议、飞书文档、云盘等办公协作套件,更提供飞书 OKR、飞书招聘、飞书绩效等组织管理产品。作为一款企业协作与管理平台,业务复杂度非常高,稍有不注意就会触发 OOM,导致程序崩溃。

那么飞书的业务有多复杂呢?举例来说:

飞书消息列表页的消息类型多达十余种,包括文档预览,视频、复杂的富文本等;

飞书会议在千人视频中可以对视频做各种特效渲染,视频过程能共享文档,千人在线编辑文档;

飞书文档本身支持插入各种类型信息,比如复杂计算公式、脑图、UML 图、同时也支持外部扩展;

飞书把内存的使用运用到了极限,稍不留意就会导致 OOM。试想一下,千人视频会议的时候,突然间因为内存问题导致崩溃,会议方是什么感受?给客户发送一条复杂的消息,因为内存问题,客户的手机崩溃了,客户是什么感受?基于此,解决内存问题、分析定位线上 OOM 原因,是飞书的首要目标。

2.火山引擎MARS-APM Plus为飞书性能保驾护航

APM Plus 是字节跳动应用开发套件 MARS 下的性能监控产品,通过先进的数据采集与监控技术,为企业提供全链路的应用性能监控服务,解决企业对各端监控的需求。具备非侵入式监控、丰富的异常现场还原能力,助力企业提升异常问题排查与解决的效率、优化应用品质,以降低成本提高收入。

图片1.png

MARS-APM Plus-功能介绍

飞书通过火山引擎 MARS-APM Plus memory graph 提供的类聚合列表,能清晰的发现内存占用排名靠前的类,每一个类还可以向下钻取到内存节点单元,通过内存节点单元可以查询到节点的引用关系,顺藤摸瓜,找到最开始的父节点,同时还可以逆向去看其他内存节点单元是否也是同样的引用关系,以此来佐证该内存问题。通过这种分析思路,我们发现了超大图问题、超多帧 gif 问题、资源预加载问题等等。

火山引擎 MARS-APM Plus 的内存优化分「 OOM 趋势」、「泄露分析」、「大对象」和「单设备查询」。

OOM 趋势:提供了内存泄露的指标分析。除了4个核心指标( OOM 次数、OOM率、影响用户数、影响用户比例)外,还提供进一步分析 OOM 的扩展指标,如:App占用内存大小、App 占用内存比例。

泄露分析:提供了导致泄漏的对象类型列表和详情分析。在这里可以逐一分析那些严重导致内存泄露的对象。

对象列表中:提供了占用内存过大的大对象以及数量众多聚合而成的小对象。以帮助研发更准确地了解内存被哪些对象占用。

单设备查询中:可直接分析单台设备的内存问题。iOS 提供了直接精准分析单台设备的内存引用树、支配树、实例等,Android 可下载查询其原始数据。

在使用 memory graph 前,飞书线上分析手段单一,也不能给出明确的理论依据,一度线上OOM 用户影响率达到2‰,通过使用 memory graph,我们有效分析定位问题线上 case 多达 30 例,线上 OOM 率降低到了 0.8‰,降幅达到 60% 。大幅提升了用户体验,为飞书的性能品质保驾护航。

3.助力企业提升IT异常问题排查与解决的效率、优化应用品质

APM Plus 为企业提供针对应用服务的品质、性能以及自定义埋点 的 APM 服务。基于海量数据的聚合分析,平台可帮助客户发现多类异常问题,并及时报警,做分配处理,同时平台提供了丰富的归因能力,包括且不限于异常分析、多维分析、自定义上报、单点日志查询等,结合灵活的报表能力可了解各类指标的趋势变化。除飞书外,APM Plus 已服务了抖音、今日头条、Tik Tok 等多个超大规模用户量级移动 App。

图片2.png

火山引擎 MARS-APM Plus 的内存监控可定位到因内存占用导致的异常,并提供多种排查内存异常的指标、维度与手段:

无死角地发现已出现的内存异常问题,有完备的归因链路。不仅提供了丰富的指标可分析内存问题并确定影响范围,并能够给出导致内存异常的对象列表,还能够分析单台设备上具体异常节点。提供从大盘到代码的层层递进的归因分析能力,极大提高研发的排查效率

提供预防内存异常的能力。可给出有导致内存异常风险的对象列表,可提前针对性地优化,降低事故发生率,在影响用户前就解决掉潜在风险。

目前,火山引擎 MARS-APM Plus 面向新用户提供试用30 天的限时免费服务。其中包含 App 监控、Web 监控、Server 监控、小程序监控,App 监控和 Web 监控各500 万条事件量, Server 与小程序监控限时不限量。

责任编辑:张诚 来源: 互联网
相关推荐
点赞
收藏

51CTO技术栈公众号