通过应用火山引擎 MARS-APM Plus 的 memory graph 性能,飞书研发团队无效剖析定位问题线上 case 多达 30 例,线上 OOM 率升高到了 0.8‰,降幅达到 60%。大幅晋升了用户体验,为飞书的性能品质保驾护航。
应用程序稳定性是影响用户体验及留存的关键因素
对于挪动 App 的开发者来说,最根底也是最关注的问题就是应用程序的稳定性。而解体问题是影响稳定性的重要因素,包含 NSException、Signal、卡死、OOM(Out Of Memory)等问题类型。其中,OOM 问题是随着业务的迭代,缓缓进入了开发者视线。
OOM 问题往往埋伏在简单的业务背景下,复现艰难且短少无效的问题排查伎俩。目前在 iOS 端排查内存问题的工具次要包含 Xcode 提供的 Memory Graph 和 Instruments 相干的工具集,它们可能提供绝对齐备的内存信息,然而利用场景仅限于开发环境,无奈在生产环境应用。因为内存问题往往产生在一些极其的应用场景,线下开发测试个别无奈笼罩对应的问题,Xcode 提供的工具无奈剖析解决大多数偶现的疑难问题。
飞书是字节跳动旗下先进企业合作与治理平台,不仅蕴含一站式整合及时沟通、智能日历、音视频会议、飞书文档、云盘等办公合作套件,更提供飞书 OKR、飞书招聘、飞书绩效等组织治理产品。作为一款企业合作与治理平台,业务复杂度十分高,稍有不留神就会触发 OOM,导致程序解体。
那么飞书的业务有多简单呢?举例来说:
- 飞书音讯列表页的音讯类型多达十余种,包含文档预览,视频、简单的富文本等;
- 飞书会议在千人视频中能够对视频做各种特效渲染,视频过程能共享文档,千人在线编辑文档;
- 飞书文档自身反对插入各种类型信息,比方简单计算公式、脑图、UML 图、同时也反对内部扩大;
- ……
飞书把内存的应用使用到了极限,稍不注意就会导致 OOM。试想一下,千人视频会议的时候,忽然间因为内存问题导致解体,会议方是什么感触?给客户发送一条简单的音讯,因为内存问题,客户的手机解体了,客户是什么感触?基于此,解决内存问题、剖析定位线上 OOM 起因,是飞书的首要指标。
火山引擎 MARS-APM Plus 为飞书性能保驾护航
APM Plus 是字节跳动利用开发套件 MARS 下的性能监控产品,通过先进的数据采集与监控技术,为企业提供全链路的利用性能监控服务,解决企业对各端监控的需要。具备非侵入式监控、丰盛的异样现场还原能力,助力企业晋升异样问题排查与解决的效率、优化利用品质,以降低成本进步支出。
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%。大幅晋升了用户体验,为飞书的性能品质保驾护航。
助力企业晋升 IT 异样问题排查与解决的效率、优化利用品质
APM Plus 为企业提供 针对应用服务的品质、性能以及自定义 埋点 的 APM 服务。基于海量数据的聚合剖析,平台可帮忙客户发现多类异样问题,并及时报警,做调配解决,同时平台提供了丰盛的归因能力,包含且不限于异样剖析、多维分析、自定义上报、单点日志查问等,联合灵便的报表能力可理解各类指标的趋势变动。除飞书外,APM Plus 已服务了抖音、今日头条、Tik Tok 等多个超大规模用户量级挪动 App。
火山引擎 MARS-APM Plus 的内存监控可定位到到因内存占用导致的异样,并提供多种排查内存异样的指标、维度与伎俩:
- 无死角地发现已呈现的内存异样问题,有齐备的归因链路。 不仅提供了丰盛的指标可剖析内存问题并确定影响范畴,并可能给出导致内存异样的对象列表,还可能剖析单台设施上具体异样节点。提供从大盘到代码的层层递进的归因剖析能力,极大进步研发的排查效率
- 提供预防内存异样的能力。 可给出有导致内存异样危险的对象列表,可提前针对性地优化,升高事变发生率,在影响用户前就解决掉潜在危险。
目前,火山引擎 MARS-APM Plus 面向新用户提供 试用 30 天的限时收费服务。其中蕴含 App 监控、Web 监控、Server 监控、小程序监控,App 监控和 Web 监控各 500 万条事件量,Server 与小程序监控限时不限量。
相干文章: https://mp.weixin.qq.com/s/hQ…
MARS TALK | 02
今日头条极速版插件化实际分享
10 月 28 日(周四)晚八点 ,咱们邀请火山引擎 MARS-APM Plus 的火山引擎 MARS-APM Plus 开发工程师党鹏飞和飞书 iOS 开发工程师蔡亮,做客 MARS TALK 第二期,分享 飞书基于 MARS-APM Plus 的性能优化实际之路。