红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

微信客户端性能监控和优化简述

  • 2017-07-10
  • 本文字数:2304 字

    阅读完需:约 8 分钟

一款产品能否与用户产生化学反应,客户端在这一过程中的性能作用最关键。启动时间太长、内存消耗太大、ANR 等等,都会直接影响用户对一款应用的判断和使用体验。

如微信 Slogan 说的那样:微信,是一个生活方式。所以,微信 App 本身就包含非常多且复杂度高的业务模块(如搜索、视频等),也接入了很多第三方的插件,这势必会拖慢应用的启动时间和响应速度,尤其是目前出现了“微信重度用户”这一现象,迫使微信不得不采取更多的分析和优化措施。

目前,已经有超过 9 亿用户在手机端使用微信,针对这样庞大的用户群,微信本着精益求精的态度和对用户体验的追求,在技术角度上最大程度的对性能进行优化。

也很荣幸,在由听云联合极客邦科技 /InfoQ 共同主办的 APMCon 2017 会议上,我们邀请微信“小黑屋 11 人”之一的微信客户端开发团队负责人陈岳伟(Lylechen)来 APMCon 现场分享“微信重度⽤户体验的优化之道”。在此之前,InfoQ 对陈岳伟进行了采访,简单介绍了微信客户端性能监控和优化的内容。

InfoQ:请介绍一下,微信 iOS 客户端第一个版本开发花了多长时间,在性能上有哪些关注点?

陈岳伟:第一个 iOS 和 Android 微信版本均花了 2 个月左右的开发时间。初期阶段主要集中在功能开发上,对性能没有特别花太多时间关注,主要对于启动速度、消息收发等主场景做了压力测试。对于一个初创的产品,微信研发团队更看重版本的快速迭代,“先迭代再优化”是第一原则。

InfoQ:目前微信客户端有哪些维度的性能监控,侵入性如何,对性能十分有影响?

陈岳伟:目前微信客户端的性能监控纬度,主要包含 Crash、卡顿、耗时、内存、SQLite、安装包大小、网络性能等。

微信研发团队所做的监控系统可以分为两类:一类是通用监控,一类是专项监控。

针对通用监控,团队搭建了一套基于简单数值上报的终端实时监控系统,可以覆盖几乎所有的监控纬度,最终呈现出来的是 PV、UV、耗时分布、错误统计等。比如准实时生成客户端启动次数、Crash 次数、网络调用次数等曲线,最少延迟可以做到 10 分钟以内。

通用监控主要用于快速发现问题,而其定位问题的能力相对较弱,于是构建了多个专项监控系统。举个例子,微信团队构建的卡顿监控系统,不仅可以监控客户端卡顿次数,还可以展示卡顿堆栈分类和排序,部分场景还可以做到精确标示函数调用的耗时分布。当然专项监控的上报延时更长,数据计算也比较复杂,目前能做到“小时~天”的级别,主要起分析定位的作用。

大部分监控以手动埋点、框架性自动埋点以及触发式上报为主,对性能影响很小。SQLite 和耗时监控,涉及较细力度的插桩,会有一定的性能损耗,前者主要用于开发和自动化测试阶段,后者对现网用户做了一定的采样。

InfoQ:微信客户端在性能上有哪些优化点(如网络、协议、长列表、本地数据库)?

陈岳伟:针对微信客户端的性能优化,主要分为网络、UI、内存、存储等四大模块。

网络方面,在 IPList 选择策略、复合连接、连接耗时和稳定性、收发包耗时和稳定性、协议包压缩精简等诸多方面均作了长期的优化措施;针对安卓的后台长连接这一项,研发团队就在心跳策略、Push 及时性等方面做了很多工作。(参照 Mars 开源项目了解更多)

UI 方面,除了经典 TableView 和 ListView 优化外,团队在图片 / 视频编解码、Bitmap 磁盘映射、视频渲染 Open GL 等领域也花了不少功夫。

内存方面,微信团队构建了实用的内存泄漏工具以及前台 OOM 检测工具,在开发过程中即可快速发现内存访问不当的代码实现;针对联系人、头像和图片等模块做了统一的资源池,制定了符合微信特点的缓存和淘汰策略。

存储方面,团队研发了高易用接口的 WCDB 组件,统一了微信内的 DB 线程模型和事务机制;根据微信客户端的消息、联系人、朋友圈和收藏等模块做了针对性的 DB 分离和数据表拆分;通过修改 SQLite 源码,大幅度降低了 SQLITE_BUSY 的发生次数;通过配置 DB 文件和 WAL 文件的 mmap 模式,对 DB 的 IO 性能也有不少的提升。关于这方面的内容,欢迎大家参考 WCDB 开源项目

InfoQ:微信客户端目前开发了哪些跨端组件,是否均使用 C/C++ 开发?

陈岳伟:目前主要有两大跨平台组件,包括 Mars 组件(COMM、XLOG、SDT、STN,详见 Mars 介绍)和 WCDB 组件。其中 Mars 全部使用 C/C++ 开发,可适用于 iOS、Android、Windows 和 Mac 等平台;而 WCDB 主要根据 iOS(MacOS)和 Android 两个平台提供了不同的语言适配,但底层的 SQLite 源码优化和 RepairKit,还是继续采用 C/C++ 开发。

InfoQ:微信 iOS 端在 WebView 上做了哪些优化,有哪些性能监控点?

陈岳伟:iOS 端的 WebView 主要做了资源预加载与缓存、视频代理与下载策略优化、图片代理与编码优化等,针对 WebView 安全和微信特有的 JS SDK 也有一系列的优化策略。

目前微信绝大部分 WebView,均已替换为 WKWebView,在内存占用和稳定性上有很大的提升。性能监控点,主要包含各阶段耗时分布、相关错误码分类和内存 OOM 监控。

InfoQ:针对重度用户的体验优化是从什么时候开始的?当时的触发点是什么?到目前主要做了哪些工作,有什么规划?

陈岳伟:从 2015 年底开始,当时触发点是 DB 损坏率极速上升,以及用户存储空间快速增长;目前主要对 DB 损坏、内存 OOM 和存储架构等做部分优化工作,前两者会在 APMCon 给大家做详细分享;后续希望对重度用户大盘进行更精确的监控和分析,提升问题发现和定位能力。

嘉宾介绍:

陈岳伟(Lylechen),微信客户端开发团队负责人,统筹微信在 iOS、Android、Mac 和 Windows 等平台的开发管理工作。2010 年加入微信团队,从无到有构建出微信的第一个 iOS 版本,并持续不断进行架构优化和性能稳定性打磨。近年来主要关注微信终端监控体系以及微信重度用户的性能提升和体验优化。

2017-07-10 04:454501
用户头像

发布了 150 篇内容, 共 66.0 次阅读, 收获喜欢 193 次。

关注

评论

发布
暂无评论
发现更多内容

华秋应邀精彩亮相IOTE物联网展

华秋电子

IOTE

入门有监督学习:数据、模型、度量

麦田的守望者

机器学习 有监督学习

同一份数据全域共享,HashData UnionStore实时性背后的故事

酷克数据HashData

软件测试/测试开发丨ChatGPT在测试计划中的应用策略

测试人

人工智能 软件测试 测试开发 ChatGPT

干货丨中国移动5G数字工厂引领工业数字化未来(附PPT)

工赋开发者社区

深度学习之“切图”

矩视智能

深度学习

数字货币交易平台,专业数字货币交易系统开发

V\TG【ch3nguang】

Mac苹果电脑无线鼠标连不上怎么办

柠檬与橘子

广东汕头等保测评机构有哪些?位于哪里?

行云管家

等保 等级保护 等保测评 汕头

这个时代,由消费主导的敏态数据更值钱

ToB行业头条

【华秋干货铺】双面混装PCBA过波峰焊时,如何选用治具?

华秋电子

PCB

PPT | 智能工厂生产制造执行系统(MES)建设方案

工赋开发者社区

【效率提升】maven 转 gradle 实战 | 京东云技术团队

京东科技开发者

maven 编译 Gradle 打包工具 企业号9月PK榜

物联网、工业大数据平台 TDengine 与苍穹地理信息平台完成兼容互认证

TDengine

时序数据库 #TDengine 国产时序数据库

深入探讨Java面试中内存泄漏:如何识别、预防和解决

程序那些事

Java 程序那些事 面试秘籍

腾讯云ES:一站式接入,数据链路可视化重磅来袭!

腾讯云大数据

ES

低代码引擎 TinyEngine 正式发布!!!

OpenTiny社区

开源 前端 低代码

文档信息抽取技术:从非结构化文本到结构化信息的旅程

合合技术团队

人工智能 技术 文档 文档抽取

鲸鸿动能加入气候行动,与野生救援(WildAid)探索公益新玩法

最新动态

Golang 的 GMP:并发编程的艺术

树上有只程序猿

golang GMP

从 Hackathon 战队到创业公司,和开发者们聊聊真实世界 AI Apps 的基础设施丨活动预告

PingCAP

数据库 开发 hackathon TiDB pingCAP

ByConity 技术详解之 ELT

字节跳动开源

大数据 开源 实时数仓 Clickhouse 数仓

一篇聊聊Mybatis插件开发

互联网工科生

sql 数据 mybatis

基于Kubernetes的Serverless PaaS稳定性建设万字总结

Serverless Devs

云计算 Serverless 运维 托管

直销系统开发|直销系统开发详解

V\TG【ch3nguang】

聊聊wireshark的进阶使用功能 | 京东云技术团队

京东科技开发者

网络协议 Wireshark 抓包 企业号9月PK榜

Photoshop 2023 (ps 2023) for Mac v24.7正式版

mac

PS2023 苹果mac Windows软件 图像编辑软件 ​Photoshop 2023

哪款国产堡垒机好用便宜实惠?大家推荐一下!

行云管家

网络安全 数据安全 堡垒机 国产

CRM系统开发要多少钱_CRM管理系统开发报价

V\TG【ch3nguang】

亚马逊云科技面向 macOS 的 Amazon 云服务器 EC2 M1 Mac 实例

亚马逊云科技 (Amazon Web Services)

存储 VPC EC2

用友第五届开发者大赛初赛晋级公示,复赛火热进行中!

YonBuilder低代码开发平台

微信客户端性能监控和优化简述_语言 & 开发_Lucien_InfoQ精选文章