今日头条性能优化与监控归因实践

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 今日头条性能优化与监控实践 徐磊 今日头条平台技术负责人
2.
3. 分享导视 • 背景介绍 • ANR 分析与优化实践 • 虚拟机内存优化实践 • 系统优化合集 • 监控工具建设 • 回顾与展望
4. 背景介绍 面临挑战:内忧外患 应对策略:攘外安内 应用快速迭代 获取日志能力有限 线上运营频繁 精准监控 快速归因 严入严出 系统兼容 Android碎片化 厂商定制化 系统改造
5. 分享导视 • 背景介绍 • ANR分析与实践 (现状分析,监控工具,系统优化实践) • 虚拟机内存管理优化 • 系统优化合集 • 监控平台建设 • 回顾与展望
6. ANR实践-现状分析 Trace置信度低 (有效性 < 30%) 问题复杂性 (系统影响> 30%) 信息局限性 (解决率 < 50%) "main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 obj=0x770306e8 self=0xadf84f00 | sysTid=20514 nice=-10 cgrp=default sched=0/0 handle=0xb0d6d534 | state=R schedstat=( 25616960201 10910088018 25607 ) utm=2205 stm=356 core=3 HZ=100 | stack=0xbe3eb000-0xbe3ed000 stackSize=8MB | held mutexes= kernel: (couldn't read /proc/self/task/20514/stack) at android.os.MessageQueue.nativePollOnce(MessageQueue.java) at android.os.MessageQueue.next(MessageQueue.java:356) at android.os.Looper.loop(Looper.java:138) at android.app.ActivityThread.main(ActivityThread.java:6623) at java.lang.reflect.Method.invoke!(Method.java) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:832) 业务:复杂度高 Trace完整性 系统:进程间Cpu/IO/Mem竞争 历史可追溯性 硬件:CPU/GPU/Low Power 系统信息获取
7. ANR实践-Raster监控 Raster核心思想: 跟踪和记录耗时严重消息 及关键消息 ANR时获取当前消息及消 息队列待调度消息 对耗时严重消息采样堆栈 Raster特征: 回放过去,现在,未来 一键接入,低耦合 兼容Android全版本
8. ANR实践-案例实践 主线程Trace堆栈 Raster还原主线程现场
9. ANR实践-系统优化背景介绍 消息顺序执行,容易形成消息竞争 部分场景高并发,Service无法及时响应 业务复杂治理&维护成本高
10. ANR实践-系统双线程调度 Horae框架核心思想: 代理&拦截mH入队消息,转发 Service/Receiver 独立线程执行,不与主线程竞争, 提升响应能力 Horae框架特点: 支持黑白名单,灵活定制 一键接入,动态开关 兼容Android全版本
11. ANR实践-系统双线程调度收益 线上效果: 接入头条/抖音/火山等10多款产品 超10亿设备平稳运行 ANR普降30%,部分系统降幅50%
12. 分享导视 • 背景介绍 • ANR分析与系统优化 • 虚拟机内存管理优化 (现状介绍,方案原理,优化实践) • 系统优化合集 • 监控平台建设 • 回顾与展望
13. 虚拟机内存-OOM示例介绍 Crash堆栈 java.lang.OutOfMemoryError: Failed to allocate a 2096652 byte allocation with 287536 free bytes and 280KB until OOM at dalvik.system.VMRuntime.newNonMovableArray(VMRuntime.java) at android.graphics.Bitmap.nativeCreate(Bitmap.java) at android.graphics.Bitmap.createBitmap(Bitmap.java:831) at android.graphics.Bitmap.createBitmap(Bitmap.java:808) at android.graphics.Bitmap.createBitmap(Bitmap.java:775) at com.facebook.imagepipeline.memory.BucketsBitmapPool.alloc at com.facebook.imagepipeline.memory.BasePool.get Crash时Large Space内存占用 Crash画像系统分布
14. 虚拟机内存-内存管理介绍 内存现状: Space类型:按照不同内存类型,划分不同Space LargeSpace:Native层申请,纳入虚拟机统计 内存统计:各Space共享512M,此消彼⻓ 系统优化策略: Android O版本将bitmap源数据下沉到Native,虚拟 机只统计Bitmap对象大小,以间接提升其他内存使用
15. 虚拟机内存-LargeObjectSpace介绍 LargeObjectSpace特征: 非连续空间,对象离散分布 单个对象大于4个物理⻚ 内存纳入虚拟机统计,但实际从Native申请
16. 虚拟机内存优化-管理策略优化 内存统计流程: 内存申请后加上新增内存 内存回收后减去释放内存 内存统计优化: LargeSpace内存申请后 提前 减去本次 新增内存 GC内存回收后 补偿 本次LargeSpace 释放内存
17. 虚拟机内存优化-优化效果对比 改造后内存统计变化: LargeObjectSpace内存占用不 在纳入虚拟机内存统计范围 其它Space独占512M使用上限 Android版本 虚拟机内存上限 LargeSpace内存理论范围 说明 Android O以下 512M 0~512M 所有内存Space共享512M 包括Bitmap源数据 Android O及以上 512M 0~512M 所有内存Space共享512M 0~2G Other Space独占512M LargeSpace不纳入统计 Android全版本 + mSponge方案 512M
18. 虚拟机内存优化-挽救OOM 方案核心: 监听&拦截OOM 开启虚拟机内存优化方案,提升 空间使用范围 再次触发内存申请,挽救OOM mSponge特点: 自动按需开启保障最大化收益 统一虚拟机内存管理策略 一键接入,全版本兼容
19. 分享导视 • 背景介绍 • ANR分析与系统优化 • 虚拟机内存管理优化 • 系统优化方案合集 (一站式解决框架Godzilla,实例分享) • 监控能力建设 • 回顾与展望
20. 系统优化-通用优化框架Godzilla Godzilla框架介绍: 背景:系统或厂商定制引起众多问题,厂商修 复周期⻓,低系统停止维护 目标:一站式解决系统层面带来的各种问题 出品方:头条/抖音/⻄瓜 方案集成:通用优化方案30+ 产品接入:头条/抖音/⻄瓜等40多款产品 线上收益:稳定性指标提升一倍以上
21. 系统优化-ProviderNoFound案例 Crash画像: 问题场景:新增Provider组件,应用升级首次启动过程 问题原因:升级过程中系统过早拉活,加载旧Dex 解决思路: 动态代理mInstrumentation,按需拦截该类异常
22. 分享导视 • 背景介绍 • ANR分析与系统优化 • 虚拟机内存管理优化 • 系统优化合集 • 监控工具建设 (精准监控,容器化,自动归因) • 回顾与展望
23. 监控平台-LOUPE背景介绍 面临挑战: 快速迭代,低级问题频繁逃逸 发现问题简单,定位问题困难 多部⻔协同,沟通对接成本高
24. 监控平台-LOUPE框架总览 产品介绍: 使用场景:压测/回归测试 堆栈快照,可视化,自动归因 沙箱机制,交互式监控 目标: 解决“最后一公里难题” (发现问题到快速定位问题)
25. 分享导视 • 背景介绍 • ANR分析与系统优化 • 虚拟机内存管理优化 • 系统优化合集 • 监控工具建设 • 回顾与展望
26. 总结回顾 优化演进历程: 问题视⻆:业务视⻆,系统视⻆ 治理过程:解决问题,快速解决问题 方案选型:系统方案,降低维护成本 治理思路:线上,线下
27. 展望 攻坚战,持久战,更早发现&拦截问题,提升效率,提高人效
28. xulei.sky@bytedance.com 欢迎找我交流
29.
30.

Accueil - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-17 06:38
浙ICP备14020137号-1 $Carte des visiteurs$