• <ul id="k6mek"><pre id="k6mek"></pre></ul>
      <ul id="k6mek"></ul>
      <ul id="k6mek"></ul>
    • <blockquote id="k6mek"><fieldset id="k6mek"></fieldset></blockquote>
    • <samp id="k6mek"><tbody id="k6mek"></tbody></samp><ul id="k6mek"><tbody id="k6mek"></tbody></ul>
      <th id="k6mek"></th>
    • <samp id="k6mek"></samp>
    • 微信客戶端性能監(jiān)控和優(yōu)化簡述

      一款產(chǎn)品能否與用戶產(chǎn)生化學(xué)反應(yīng),客戶端在這一過程中的性能作用最關(guān)鍵。啟動(dòng)時(shí)間太長、內(nèi)存消耗太大、ANR 等等,都會(huì)直接影響用戶對一款應(yīng)用的判斷和使用體驗(yàn)。

      如微信 Slogan 說的那樣:微信,是一個(gè)生活方式。所以,微信 App 本身就包含非常多且復(fù)雜度高的業(yè)務(wù)模塊(如搜索、視頻等),也接入了很多第三方的插件,這勢必會(huì)拖慢應(yīng)用的啟動(dòng)時(shí)間和響應(yīng)速度,尤其是目前出現(xiàn)了“微信重度用戶”這一現(xiàn)象,迫使微信不得不采取更多的分析和優(yōu)化措施。

      目前,已經(jīng)有超過 9 億用戶在手機(jī)端使用微信,針對這樣龐大的用戶群,微信本著精益求精的態(tài)度和對用戶體驗(yàn)的追求,在技術(shù)角度上最大程度的對性能進(jìn)行優(yōu)化。

      也很榮幸,在由聽云聯(lián)合極客邦科技 /InfoQ 共同主辦的 APMCon 2017 會(huì)議上,我們邀請微信“小黑屋 11 人”之一的微信客戶端開發(fā)團(tuán)隊(duì)負(fù)責(zé)人陳岳偉(Lylechen)來 APMCon 現(xiàn)場分享“微信重度?戶體驗(yàn)的優(yōu)化之道”。在此之前,InfoQ 對陳岳偉進(jìn)行了采訪,簡單介紹了微信客戶端性能監(jiān)控和優(yōu)化的內(nèi)容。

       嘉賓介紹

      陳岳偉(Lylechen),微信客戶端開發(fā)團(tuán)隊(duì)負(fù)責(zé)人,統(tǒng)籌微信在 iOS、Android、Mac 和 Windows 等平臺(tái)的開發(fā)管理工作。2010 年加入微信團(tuán)隊(duì),從無到有構(gòu)建出微信的第一個(gè) iOS 版本,并持續(xù)不斷進(jìn)行架構(gòu)優(yōu)化和性能穩(wěn)定性打磨。近年來主要關(guān)注微信終端監(jiān)控體系以及微信重度用戶的性能提升和體驗(yàn)優(yōu)化。

      InfoQ:請介紹一下,微信 iOS 客戶端第一個(gè)版本開發(fā)花了多長時(shí)間,在性能上有哪些關(guān)注點(diǎn)?

      陳岳偉:第一個(gè) iOS 和 Android 微信版本均花了 2 個(gè)月左右的開發(fā)時(shí)間。初期階段主要集中在功能開發(fā)上,對性能沒有特別花太多時(shí)間關(guān)注,主要對于啟動(dòng)速度、消息收發(fā)等主場景做了壓力測試。對于一個(gè)初創(chuàng)的產(chǎn)品,微信研發(fā)團(tuán)隊(duì)更看重版本的快速迭代,“先迭代再優(yōu)化”是第一原則。

      InfoQ:目前微信客戶端有哪些維度的性能監(jiān)控,侵入性如何,對性能十分有影響?

      陳岳偉:目前微信客戶端的性能監(jiān)控緯度,主要包含 Crash、卡頓、耗時(shí)、內(nèi)存、SQLite、安裝包大小、網(wǎng)絡(luò)性能等。

      微信研發(fā)團(tuán)隊(duì)所做的監(jiān)控系統(tǒng)可以分為兩類:一類是通用監(jiān)控,一類是專項(xiàng)監(jiān)控。

      針對通用監(jiān)控,團(tuán)隊(duì)搭建了一套基于簡單數(shù)值上報(bào)的終端實(shí)時(shí)監(jiān)控系統(tǒng),可以覆蓋幾乎所有的監(jiān)控緯度,最終呈現(xiàn)出來的是 PV、UV、耗時(shí)分布、錯(cuò)誤統(tǒng)計(jì)等。比如準(zhǔn)實(shí)時(shí)生成客戶端啟動(dòng)次數(shù)、Crash 次數(shù)、網(wǎng)絡(luò)調(diào)用次數(shù)等曲線,最少延遲可以做到 10 分鐘以內(nèi)。

      通用監(jiān)控主要用于快速發(fā)現(xiàn)問題,而其定位問題的能力相對較弱,于是構(gòu)建了多個(gè)專項(xiàng)監(jiān)控系統(tǒng)。舉個(gè)例子,微信團(tuán)隊(duì)構(gòu)建的卡頓監(jiān)控系統(tǒng),不僅可以監(jiān)控客戶端卡頓次數(shù),還可以展示卡頓堆棧分類和排序,部分場景還可以做到精確標(biāo)示函數(shù)調(diào)用的耗時(shí)分布。當(dāng)然專項(xiàng)監(jiān)控的上報(bào)延時(shí)更長,數(shù)據(jù)計(jì)算也比較復(fù)雜,目前能做到“小時(shí)~天”的級(jí)別,主要起分析定位的作用。

      大部分監(jiān)控以手動(dòng)埋點(diǎn)、框架性自動(dòng)埋點(diǎn)以及觸發(fā)式上報(bào)為主,對性能影響很小。SQLite 和耗時(shí)監(jiān)控,涉及較細(xì)力度的插樁,會(huì)有一定的性能損耗,前者主要用于開發(fā)和自動(dòng)化測試階段,后者對現(xiàn)網(wǎng)用戶做了一定的采樣。

      InfoQ:微信客戶端在性能上有哪些優(yōu)化點(diǎn)(如網(wǎng)絡(luò)、協(xié)議、長列表、本地?cái)?shù)據(jù)庫)?

      陳岳偉:針對微信客戶端的性能優(yōu)化,主要分為網(wǎng)絡(luò)、UI、內(nèi)存、存儲(chǔ)等四大模塊。

      網(wǎng)絡(luò)方面,在 IPList 選擇策略、復(fù)合連接、連接耗時(shí)和穩(wěn)定性、收發(fā)包耗時(shí)和穩(wěn)定性、協(xié)議包壓縮精簡等諸多方面均作了長期的優(yōu)化措施;針對安卓的后臺(tái)長連接這一項(xiàng),研發(fā)團(tuán)隊(duì)就在心跳策略、Push 及時(shí)性等方面做了很多工作。(參照  Mars 開源項(xiàng)目了解更多)

      UI 方面,除了經(jīng)典 TableView 和 ListView 優(yōu)化外,團(tuán)隊(duì)在圖片 / 視頻編解碼、Bitmap 磁盤映射、視頻渲染 Open GL 等領(lǐng)域也花了不少功夫。

      內(nèi)存方面,微信團(tuán)隊(duì)構(gòu)建了實(shí)用的內(nèi)存泄漏工具以及前臺(tái) OOM 檢測工具,在開發(fā)過程中即可快速發(fā)現(xiàn)內(nèi)存訪問不當(dāng)?shù)拇a實(shí)現(xiàn);針對聯(lián)系人、頭像和圖片等模塊做了統(tǒng)一的資源池,制定了符合微信特點(diǎn)的緩存和淘汰策略。

      存儲(chǔ)方面,團(tuán)隊(duì)研發(fā)了高易用接口的 WCDB 組件,統(tǒng)一了微信內(nèi)的 DB 線程模型和事務(wù)機(jī)制;根據(jù)微信客戶端的消息、聯(lián)系人、朋友圈和收藏等模塊做了針對性的 DB 分離和數(shù)據(jù)表拆分;通過修改 SQLite 源碼,大幅度降低了 SQLITE_BUSY 的發(fā)生次數(shù);通過配置 DB 文件和 WAL 文件的 mmap 模式,對 DB 的 IO 性能也有不少的提升。關(guān)于這方面的內(nèi)容,歡迎大家參考 WCDB 開源項(xiàng)目。

      InfoQ:微信客戶端目前開發(fā)了哪些跨端組件,是否均使用 C/C++ 開發(fā)?

      陳岳偉:目前主要有兩大跨平臺(tái)組件,包括 Mars 組件(COMM、XLOG、SDT、STN,詳見 Mars 介紹)和 WCDB 組件。其中 Mars 全部使用 C/C++ 開發(fā),可適用于 iOS、Android、Windows 和 Mac 等平臺(tái);而 WCDB 主要根據(jù) iOS(MacOS)和 Android 兩個(gè)平臺(tái)提供了不同的語言適配,但底層的 SQLite 源碼優(yōu)化和 RepairKit,還是繼續(xù)采用 C/C++ 開發(fā)。

      InfoQ:微信 iOS 端在 WebView 上做了哪些優(yōu)化,有哪些性能監(jiān)控點(diǎn)?

      陳岳偉:iOS 端的 WebView 主要做了資源預(yù)加載與緩存、視頻代理與下載策略優(yōu)化、圖片代理與編碼優(yōu)化等,針對 WebView 安全和微信特有的 JS SDK 也有一系列的優(yōu)化策略。

      目前微信絕大部分 WebView,均已替換為 WKWebView,在內(nèi)存占用和穩(wěn)定性上有很大的提升。性能監(jiān)控點(diǎn),主要包含各階段耗時(shí)分布、相關(guān)錯(cuò)誤碼分類和內(nèi)存 OOM 監(jiān)控。

      InfoQ:針對重度用戶的體驗(yàn)優(yōu)化是從什么時(shí)候開始的?當(dāng)時(shí)的觸發(fā)點(diǎn)是什么?到目前主要做了哪些工作,有什么規(guī)劃?

      陳岳偉:從 2015 年底開始,當(dāng)時(shí)觸發(fā)點(diǎn)是 DB 損壞率極速上升,以及用戶存儲(chǔ)空間快速增長;目前主要對 DB 損壞、內(nèi)存 OOM 和存儲(chǔ)架構(gòu)等做部分優(yōu)化工作,前兩者會(huì)在 APMCon 給大家做詳細(xì)分享;后續(xù)希望對重度用戶大盤進(jìn)行更精確的監(jiān)控和分析,提升問題發(fā)現(xiàn)和定位能力。


      返回觀點(diǎn)列表
      本文標(biāo)簽:

      相關(guān)專題

      • 品牌官網(wǎng)設(shè)計(jì)
        品牌官網(wǎng)設(shè)計(jì)

        杭州派迪科技為高端客戶提供品牌官網(wǎng)咨詢策劃,品牌官網(wǎng)設(shè)計(jì),品牌官網(wǎng)建設(shè)開發(fā)服務(wù),以國際化視野和標(biāo)準(zhǔn)為基礎(chǔ),為各行業(yè)領(lǐng)軍品牌提供高端企業(yè)網(wǎng)站定制、策劃、設(shè)計(jì)、互動(dòng)與制作

        查看詳情
      • 大策略營銷門戶網(wǎng)站
        大策略營銷門戶網(wǎng)站

        杭州派迪科技有自己的營銷型網(wǎng)站CMS系統(tǒng),適合白帽SEO網(wǎng)站。特別對大策略的營銷型門戶網(wǎng)站制作有一定的經(jīng)驗(yàn),曾經(jīng)為上海天擎外貿(mào)行業(yè)網(wǎng)站、浙江兆龍營銷型門戶、先臨三維門戶營銷網(wǎng)站提供全程的技術(shù)支持及SEO優(yōu)化指導(dǎo)

        查看詳情
      • 集團(tuán)/上市公司網(wǎng)站
        集團(tuán)/上市公司網(wǎng)站

        杭州派迪科技為杭州本地集團(tuán)公司提供網(wǎng)頁設(shè)計(jì)、制作、開發(fā)服務(wù),為集團(tuán)公司網(wǎng)站建設(shè)提供了響應(yīng)式、營銷型、品牌型、門戶型網(wǎng)站建設(shè)需求,歡迎廣大集團(tuán)公司客戶咨詢

        查看詳情
      • 外貿(mào)網(wǎng)站建設(shè)
        外貿(mào)網(wǎng)站建設(shè)

        杭州派迪科技為高端客戶提供外貿(mào)網(wǎng)站咨詢策劃,外貿(mào)官網(wǎng)設(shè)計(jì),外貿(mào)官網(wǎng)建設(shè)開發(fā)服務(wù),以谷歌搜索引起算法為基礎(chǔ),為各行業(yè)外貿(mào)公司提供高端企業(yè)外貿(mào)網(wǎng)站定制、策劃、設(shè)計(jì)、互動(dòng)與制作

        查看詳情
      • 企業(yè)網(wǎng)站建設(shè)
        企業(yè)網(wǎng)站建設(shè)

        高端專業(yè)、令人印象深刻的用戶界面、易于訪問——企業(yè)網(wǎng)站必須反映一切,因?yàn)榕傻峡萍荚谶@里提供幫助,憑借精湛的技術(shù)、豐富的經(jīng)驗(yàn)、與客戶的持續(xù)溝通以及對每一個(gè)細(xì)節(jié)的關(guān)注,我們確保在快速的周期時(shí)間內(nèi)提供優(yōu)質(zhì)的服務(wù)。

        查看詳情
      • 半定制網(wǎng)站
        半定制網(wǎng)站

        杭州派迪科技模板網(wǎng)站建設(shè)專題_各行業(yè)方案專題欄目提供各行業(yè)產(chǎn)品適合的網(wǎng)站建設(shè)方案,幫助企業(yè)了解派迪科技建站效果等信息,您可以通過本站了解各行業(yè)網(wǎng)站建設(shè)方案,如需要獲取本行業(yè)定制網(wǎng)站建設(shè)方案,可以聯(lián)系在線客服或撥打電話咨詢

        查看詳情

      體驗(yàn)從溝通開始,讓我們聆聽您的需求!

      開始您的數(shù)字化品牌體驗(yàn)! 0571-85815193 期待您的來電!

      [ 網(wǎng)站建設(shè)×品牌官網(wǎng)設(shè)計(jì)×大策略營銷門戶×微信小程序開發(fā)×微信公眾號(hào)開發(fā)]

      網(wǎng)站事業(yè)部產(chǎn)品經(jīng)理

      網(wǎng)站事業(yè)部產(chǎn)品經(jīng)理

      免費(fèi)獲取項(xiàng)目策劃

      項(xiàng)目開發(fā)部產(chǎn)品經(jīng)理

      項(xiàng)目開發(fā)部產(chǎn)品經(jīng)理

      免費(fèi)獲取項(xiàng)目策劃

      我們正使用 cookies 來改善您的訪問體驗(yàn)

      派迪科技非常重視您的個(gè)人隱私,當(dāng)您訪問我們的網(wǎng)站www.bmwdream.cn時(shí),請同意使用所有cookies 。

      如果您想詳細(xì)了解我們?nèi)绾问褂胏ookies請?jiān)L問我們的 《隱私政策》

      Cookie 偏好

      如果您想詳細(xì)了解我們?nèi)绾问褂胏ookie請?jiān)L問我們的 《隱私政策》

      管理cookie偏好

      基本 cookies

      始終允許

      這些 cookies 是網(wǎng)站運(yùn)行所必需的,不能在我們的系統(tǒng)中關(guān)閉。它們通常僅針對您所做的相當(dāng)于服務(wù)請求的操作而設(shè)置,例如設(shè)置您的隱私首選項(xiàng)、登錄或填寫表格。您可以將瀏覽器設(shè)置為阻止或提醒您有關(guān)這些 cookies 的信息,但網(wǎng)站的某些部分將無法運(yùn)行。這些 cookies 不存儲(chǔ)任何個(gè)人身份信息。

      性能 cookies

      始終允許
      這些 cookies 使我們能夠計(jì)算訪問量和流量來源,以便我們可以衡量和改進(jìn)我們網(wǎng)站的性能。它們幫助我們了解哪些頁面受歡迎和不受歡迎,并了解訪問者如何在網(wǎng)站上移動(dòng)。這些 cookies 收集的所有信息都是匯總的,而且是匿名的。如果您不允許這些 cookies,我們將不知道您何時(shí)訪問了我們的網(wǎng)站,也無法監(jiān)控其性能。

      功能性 cookies

      這些 cookies 收集信息用于分析和個(gè)性化您的定向廣告體驗(yàn)。您可以使用此撥動(dòng)開關(guān)來行使選擇不獲取個(gè)人信息的權(quán)利。如果您選擇關(guān)閉,我們將無法向您提供個(gè)性化廣告,也不會(huì)將您的個(gè)人信息交給任何第三方。

      定位 Cookies

      這些 cookies 可能由我們的廣告合作伙伴通過我們的網(wǎng)站設(shè)置。這些公司可能會(huì)使用它們來建立您的興趣檔案,并在其他網(wǎng)站上向您展示相關(guān)廣告。它們不直接存儲(chǔ)個(gè)人信息,而是基于唯一標(biāo)識(shí)您的瀏覽器和互聯(lián)網(wǎng)設(shè)備。如果您不允許使用這些 cookie,您將體驗(yàn)到較少針對性的廣告。
      • <ul id="k6mek"><pre id="k6mek"></pre></ul>
        <ul id="k6mek"></ul>
        <ul id="k6mek"></ul>
      • <blockquote id="k6mek"><fieldset id="k6mek"></fieldset></blockquote>
      • <samp id="k6mek"><tbody id="k6mek"></tbody></samp><ul id="k6mek"><tbody id="k6mek"></tbody></ul>
        <th id="k6mek"></th>
      • <samp id="k6mek"></samp>