《2018年LinkedIn移动应用的性能优化之道.pdf》由会员分享,可在线阅读,更多相关《2018年LinkedIn移动应用的性能优化之道.pdf(46页珍藏版)》请在三个皮匠报告上搜索。
1、LinkedIn 移动应用的性能优化实践项目介绍化繁为简的架构LinkedIn 性能监控体系性能优化实践案例为什么要做性能优化?LinkedIn 价值观用户第一项目规模5亿+注册用户20+业务线200+团队人数400万+代码行数大型项目的性能挑战影响面广种类繁多定位困难解决要快化繁为简的架构项目介绍LinkedIn 性能监控体系性能优化实践案例性能问题往往是项目规模引起的,而合理的架构能够化繁为简。性能优化,架构先行组件化 共享基础设施 下沉公共服务 隔离业务模块标准化 统一的基础服务 统一的应用框架 统一的开发范式 统一的用户体验收益共享公共服务,业务统一模版,降低项目复杂度代码复用率,0%
2、80%线上性能问题种类,减少 3 倍以上Crash率,减少 3 倍以上LinkedIn 性能监控体系化繁为简的架构项目介绍性能优化实践案例线上性能全链路解决问题发现问题分析问题验证效果发现问题端上性能监控可用性 Crash Abort 业务异常基础性能 启动时间 应用包体积流畅性 页面测速 卡顿检测 关键路径 渲染检测资源消耗 CPU 内存 流量 存储关键链路InitDNS LookupConnect EstablishTTFBTTLBParseModel BuildingRenderUser StartNetwork StartNetwork EndFirst Byte ReceivedRe
3、nder StartRender EndTLS+TCPServer Time业务监控业务数据监控e.g.feed点击率,工作申请数,注册路径转化率业务异常监控e.g.登录失败,过期工作展示,消息发送失败数据采集实践面向切面编程,尽量避免侵入业务根据上下文划分业务线和责任人上传时机选择:服务器压力与实效性的权衡不同类型的优先级数据流客户端数据采集APIKafkaHDFSSamza 实时任务实时数据写入离线任务定时数据写入数据库数据可视化报警分析问题故障复现 操作路径还原 线程堆栈数据洞察 地域 网络质量 开关状态 分析定位 分析工具 诊断日志解决问题新版本服务端开关热修复验证效果AB实验实验Co
4、ntrolEnabled数据采集数据采集数据分析LiX&XLNT数据驱动的效果验证性能实验EnabledControl性能监控性能监控效果分析性能提升性能退化Ramp upRamp down新实验持续监控性能优化实践案例化繁为简的架构项目介绍LinkedIn 性能监控体系监控发现,页面加载时间慢网络请求多,多次建连数据包大,传输和解析时间长页面布局渲染速度慢Connect EstablishTTFBTTLBParseModel BuildingRender 网络优化 数据简化 布局优化实践 1:网络优化曾经的MUXMUX to HTTP/2多路复用;二进制分帧;头部压缩;服务器推送页面加载时间
5、缩短7.5%QUIC优点基于UDP,0-RTT建连改进的拥塞控制避免队首阻塞的多路复用前向纠错连接迁移页面加载时间缩短6-10%内容下载时间缩短5-7.5%只在Desktop Web尝试,暂未全量应用实验效果实践 2:数据简化数据简化删除无用字段精简数据模型 Entity-MiniEntityBatch API数据缓存Frontend Deco针对 API 的查询语言,只获取所需要的数据优化效果页面加载时间缩短20%实践 3:布局优化Auto Layout 的性能问题低效的布局计算只能在Main Thread进行性能可维护性Frame LayoutAuto LayoutLayoutKitLay
6、outKit高效布局算法异步计算缓存开源LayoutKit声明式布局Background Thread两阶段计算Background ThreadUI 布局Main ThreadLayoutKit声明式布局Background Thread两阶段计算Background ThreadUI 布局Main Thread自底向上的size计算自顶向下的origin计算LayoutKit声明式布局Background Thread两阶段计算Background ThreadUI 布局Main Thread优化效果性能优化,往往会带来产品数据上的提升总结对症下药性能优化化繁为简架构设计多层维度性能监控数据驱动效果验证