火山引擎MARS- APMPlus专栏—— iOS Heimdallr 卡死卡顿监控方案与优化之路

使用火山引擎 APMPlus 解决抖音Top 1 Java 崩溃的通用优化方案 问题是在 App 进程向 system_server 进程发送 Activity.onSaveInstanceState 保存的 Bundle 数据时,驱动层在 system_server 的 Binder 接收缓冲区(大小上限 1M-8K)中分配不出用于接收 Bundle 大小的内存,导致 Binder 发送失败Bundle 数据用于 Activity 页面销毁重建时恢复页面状态,其来源包含 framework 和 App 层保存的数据。当页面过于复杂或者很重场景下可能会出现超限问题。 阅读详情

本文主要介绍Heimdallr对卡死、卡顿异常的监控原理,并结合长时间的业务沉淀发现的问题进行不断迭代和优化,逐步实现全面、稳定、可靠的历程。

作者:字节跳动终端技术——白昆仑

前言

卡死、卡顿作为目前iOS App的重要性能指标,不仅影响着用户体验,更关系到用户留存、DAU等重要产品数据。本文主要介绍Heimdallr对卡死、卡顿异常的监控原理,并结合长时间的业务沉淀发现的问题进行不断迭代和优化,逐步实现全面、稳定、可靠的历程。

一、什么是卡死/卡顿?

卡顿,顾名思义就是在使用过程中出现了一段时间的阻塞,使得用户在这一段时间内无法进行操作,屏幕上的内容也没有任何的变化。Heimdallr在监控指标上,根据阻塞时间的长短进行了3个等级的划分。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EKde0XNN-1642665310081)(https://tech-proxy.bytedance.net/tos/images/1642663790534_36575e5620cc4621d98544f0d1185e13)]

1、流畅性与丢帧:动画、滑动列表不流畅,一般为十几至几十毫秒的级别

2、卡顿:短时间操作无反应,恢复后能继续使用,从几百毫秒至几秒

3、卡死:长时间无反应,直至被系统杀死,通过线上收集数据,最少为5s

可以看到,根据严重性由小至大可将卡顿问题划分为流畅性与丢帧、卡顿、卡死三个不同的等级。卡死的严重程度与Crash是相当的,甚至更为严重。因为卡死不仅仅造成了类似于崩溃的闪退,更使得用户被迫等待了相当长的一段时间,更加损害用户的体验。由于监控方案上的差异,本文主要面向的是后两者卡顿和卡死的监控。

二、卡死/卡顿的原因

iOS开发中,由于UIKit是非线程安全的,因此一切与UI相关的操作都必须放在主线程执行,系统会每16ms(1/60帧)将UI的变化重新绘制,渲染至屏幕上。如果UI刷新的间隔能小于16ms,那么用户是不会感到卡顿的。但是如果在主线程进行了一些耗时的操作,阻碍了UI的刷新,那么就会产生卡顿,甚至是卡死。主线程对于任务的处理是基于Runloop机制,如下图所示。Runloop支持外部注册通知回调,提供了

1、RunloopEntry

2、RunloopBeforeTimers

3、RunloopBeforeSources

4、RunloopBeforeWaiting

5、RunloopAfterWaiting

6、

火山引擎 RTC 视频性能降级策略解析 动手点关注干货不迷路1. 背景随着 RTC 使用场景的不断复杂化,新特性不断增多,同时用户对清晰度提升的诉求也越来越强烈,这些都对客户端机器性能提出了越来越高的要求 (越来越高的分辨率,越来越复杂的编码器等)。但机器性能差异千差万别,同时用户的操作也不可预知,高级特性的使用和机器性能的矛盾客观存在。当用户机器负载过高时,我们需要适当降级视频特性来减轻系统复杂性,确保重要功能正常使用,提升用户体验... 阅读详情

相关推荐

在线教室 iOS 端声音问题综合解决方案

背景介绍在线教室场景下,声音是最重要的内容传输渠道之一,保障声音的稳定可靠,是在线教室质量非常重要的一环。同时在线教室里许多功能模块都声音有关联,如何处理好各个模块间的声音冲突成为一个重...

字节跳动技术团队官方博客 1万+

swift-Heimdallr.swift-采用Swift编写的iOS易于使用的OAuth2库

Heimdallr.swift - 采用Swift编写的iOS易于使用的OAuth 2库

从零设计一个 iOS 文件浏览器:Sandbox、FileManager、Document Picker 文件架构

本文从实际开发一个 iOS 文件浏览器出发,系统梳理 iOS 文件管理背后的核心技术架构设计,包括 App Sandbox、FileManager、UIDocumentPicker、Security-Scoped Resource、UTType、文件数据模型以及 FileProvider 抽象。 文章不仅介绍如何读取、复制、移动和删除文件,还进一步讨论文件冲突、大文件处理、外部文件访问,以及如何将 Local、SMB、WebDAV、FTP 等不同文件来源统一到一套文件浏览架构中。

guofeng719的专栏 482

APMPlus 发布 HarmonyOS NEXT 鸿蒙系统 App 性能监控

APMPlus火山引擎应用性能监控全链路版 App 监控)全新推出 HarmonyOS NEXT “鸿蒙星河版”App 性能监控服务,致力于为鸿蒙星河版 APP 用户提供优质的使用体验。我们积极携手鸿蒙星河版生态建设,更是荣幸地成为 DevEco Studio Partner SDK 专区首款 Performance Monitoring 型 SDK。在此,我们诚邀对鸿蒙星河版 App 性能监控有诉求的企业接入并使用我们的服务。

ma_dewei的博客 712

火山引擎 MARS-APMPlus X 美篇 | 形成应用性能全面监控,大幅提升APP稳定性

本文主要介绍了美篇 App 通过使用火山引擎 APMPlus ,使应用性能的稳定性大幅提升的技术实践。 2月24日晚 MARS TALK 直播间,我们邀请了火山引擎 APMPlus 和美篇的研发工程师,为大家分享相关技术方案及实现细节。现在报名加入活动群 还有机会获得VR一体机——Pico Neo3哦! 一、「美篇」业务场景 美篇是南京蓝鲸人网络科技有限公司的主要产品,主打朋友圈的图文创作分享,定位为“不惑后”表达自我、结交同好、学习提升的互联网内容社区。 「美篇」业务规模: 自2015年7月正式上..

YZcoder的博客 4608

使用火山引擎 APMPlus 优化 iOS 内存性能的全套指南

本文面向 iOS 研发,不会涉及复杂的底层原理,而是直接告诉 iOS 研发答案,即怎么做,只需要花半小时阅读本文,就可以在开发需求的时候,知道如何更好利用内存来提升用户体验,同时避免稳定性相关问题给业务带来负向的用户体验;同时本文作者的初心是希望这篇文章能成为研发同学的一个“字典”,在一些特定场景或者感觉可能会踩内存坑的时候可以翻阅,快速找到最佳的编码规范。

字节跳动云原生计算官方账号 1592

CloudWeGo + APMPlus:打造从开发到可观测的一站式体验

Kitex 是 Golang 微服务 RPC 框架,具有 高性能 、 高可扩展 的特点,支持多消息协议(Thrift/Protobuf/gRPC)、多消息型(PingPong/Oneway/Streaming)、服务治理、代码生成,具有完备的开源社区生态兼容性。数据分散 、 链路追踪复杂 和 故障传播 三大挑战。作为 CloudWeGo 生态中的最新成员,Eino 的开源进一步扩展了 CloudWeGo 的生态边界,使其不仅适用于传统的微服务场景,还能够赋能大模型驱动的智能化应用开发。

volcenginetod的博客 1462

APMPlus:重新定义 AI 时代的全景全栈观测

在人工智能浪潮席卷千行百业的今天,大型语言模型(LLM)正以前所未有的深度重塑应用架构。然而,这种技术变革也带来了新的运维挑战。现代 AI 应用,尤其是基于 LLM 的应用,其内部结构日益复杂,往往由多个业务服务、AI 框架和模型调用链交织而成,形成了一个难以捉摸的“黑盒”。大模型推理结果的随机性让传统的确定性监控失效Token 消耗波动、推理延迟抖动、会话上下文丢失等问题频发智能体决策链路复杂,问题溯源如同在迷宫中寻路从用户输入到智能体决策,再到模型推理,链路跨越多个系统边界。

volcenginetod的博客 880

推荐开源项目:Heimdallr - 您的OAuth 2.0守护者

![Heimdallr Logo](https://cloud.githubusercontent.com/assets/460060/8159821/b8bfeb32-136a-11e5-83ed-83b7fe01df3a.jpg) **Heimdallr** — 这是一款专为简化OAuth 2.0协议应用而生的客户端库。如果你在寻找一个既强大又易于使用的认证解决方案,那么Heimdallr

gitblog_01022的博客 1102

Heimdallr:一款专为iOS开发者设计的OAuth 2.0客户端

Heimdallr是一款专为iOS开发者设计的OAuth 2.0客户端,旨在简化OAuth 2.0的使用流程。它支持多种OAuth 2.0授权流程,包括资源所有者密码凭证授权(Resource Owner Password Credentials Grant)、访问令牌刷新(Refreshing an Access Token)以及扩展授权(Extension Grants)。Heimdallr

gitblog_00013的博客 810

火山引擎MARS-APM Plus x 飞书 |降低线上OOM,提高App性能稳定性

通过使用火山引擎MARS-APM Plus的memory graph功能,飞书研发团队有效分析定位问题线上case多达30例,线上OOM率降低到了0.8‰,降幅达到60%。大幅提升了用户体验,为飞书的性能品质保驾护航。 应用程序稳定性是影响用户体验及留存的关键因素 对于移动App的开发者来说,最基础也是最关注的问题就是应用程序的稳定性。而崩溃问题是影响稳定性的重要因素, 包括NSException、Signal、卡死、OOM(Out Of Memory)等问题型。其中,OOM问题是随着业务的迭代,慢慢.

YZcoder的博客 1441

提升汽车APP用户体验,火山引擎APMPlus的“独家秘笈”

火山引擎 APMPlus 为企业提供全链路应用性能监控服务。

YZcoder的博客 866

docker安装heimdall

docker安装heimdall前言 前言 本文案例使用ubuntu安装docker并启动heimdall镜像。heimdall可以用来做一个导航页,下面是示例图。

qq_50824217的博客 1万+

基于IOS的快捷指令和火山引擎的图片翻译API,实现的移动端屏幕翻译功能

基于IOS的快捷指令和火山引擎的图片翻译API,实现的移动端屏幕翻译功能

小白云天的博客 971

火山引擎推出一站式小程序监控方案

火山引擎 APM 团队打造出一站式小程序监控平台,旨在为开发者提供可跨平台、监控能力完善、简单易用的小程序监控服务。

YZcoder的博客 1341

应用性能监控方法一览

对于基于云的服务,其正常运行时间是最为重要的运维指标之一。服务的中断不仅会影响用户体验,而且对品牌带来负面影响。哪怕99.9%或99.99%的可用性也很难取悦用户,他们总...

weixin_37098404的博客 654
上一篇: APP性能分析工作台——性能分析更方便啦
下一篇: 基于esbuild的universal bundler设计
字节跳动终端技术
博客等级 码龄7年 206粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值