你的微信有10萬+聯系人?重度用戶需求的極限挑戰,微信接瞭!

【51CTO活動】8.26 帶你與清華大學、搜狗、京東大咖們一起探討基於算法的IT運維實踐
【51CTO.com原創稿件】微信靠什麼吸引瞭中國9億用戶?可能是它傳遞瞭一種新的生活方式,也可能是它的功能滿足瞭人們日常社交的大部分需求,也可能是它承載瞭豐富的第三方插件,但是所有的吸引力都離不開一個重要的元素 客戶端。因為客戶端是用戶接觸微信的第一步,是否有卡頓、是否占太多內存,有沒有頻繁閃退、啟動時間久不久等等因素,都會影響微信的使用體驗,也決定瞭用戶是否會成為微信 死忠粉 。

那麼,完善好瞭這一切,就足夠瞭嗎?當然不是。因為微信還有1%~2%的重度用戶,他們的需求才是對微信優化團隊的 極限挑戰 。記者日前在由聽雲主辦的2017中國應用性能管理大會現場,采訪瞭微信客戶端開發團隊負責人陳嶽偉,他與記者分享瞭 微信重度用戶體驗的優化之道 。



重度用戶需求挑戰優化極限

陳嶽偉介紹到,重度用戶是相對海量用戶提出的概念,專指針對某個特別的個案用戶。那麼這些重度用戶的微信使用和普通用戶有何不同呢?陳嶽偉告訴記者,這些重度用戶的微信聯系人名單裡往往擁有10萬+以上的聯系人,基本每天在線台中二手餐飲設備收購時長超過3個小時,每天都會接收超過5萬條消息。

從2016年年初開始,陸續有重度用戶向微信團隊反饋一個問題:在使用微信過程中,突然聊天記錄和聯系人都變成空白,即使使用微信修復工具也無法恢復,而這種問題的原因就在於用戶的本地數據量過大,加之消息收發頻繁,導致數據庫損壞。

另外,閃退問題也曾經令微信優化團隊非常頭痛。有些用戶反饋啟動微信一兩分鐘後,微信就閃退瞭,聊天記錄和聊天功能都不能使用,其實導致這個現象的直接原因就是內存占用過多。陳嶽偉表示,過去最初的微信用戶好友數量均不多,所以微信團隊技術方案設計比較簡單,將所有聯系人都緩存在內存裡,就這導致聯系人數量超過10萬以上的重度用戶被占用太多內存,影響微信正常使用。

除此之外,微信重度用戶由於臨時會話太多,手機本地存儲消息量過大,也會導致微信卡頓或閃退。

為瞭讓那萬分之三的人點贊

記者瞭解到,以閃退問題為例,此類重度用戶的日活躍數量大概在5 萬名左右,隻占微信總用戶數的萬分之三左右,那麼如此低的占比,為什麼還要花大精力去優化呢?在記者看來這完全是得不償失的事情。

陳嶽偉解釋道,重度用戶的數量並不是判斷是否值得優化的唯一標準,對微信優化團隊而言,他們有自己的評判標準,例如用戶可不可以很好地使用微信,是不是每天都會遇到同樣的問題,如果微信在這類人群處於完全不可用狀態,並且這些問題一直在持續增長,那麼壞的影響力有可能不斷擴大,那就必須去著手解決。

爆內存是如何解決的?

解決應用問題的常用思路是:發現問題、分析問題、設計方案、解決問題、灰度測試、上線、效果驗證。陳嶽偉所帶領的微信優化團隊也不例外,他以解決內存占有率太高這個問題為例,詳細介紹瞭他們是如何操作的。

通過用戶反饋這個渠道,他們發現微信存在閃退的現象。優化團隊發現,這種閃退現象並沒有Crash上報,於是他們將這種閃退現象定性為爆內存。為什麼會有爆內存?優化團隊再進一步研究發現,大多數反饋用戶都是在聯系人加載完成的那一步突然出現閃退現象,這些用戶的聯系人往往超過瞭10萬名,並且加入一兩百個大群。

那麼該如何解決它?首先需要進行情景還原,也就是把整條鏈路還原回來,重新構建用戶問題發生的場景,然後解決問題。 假設不去重現這些場景的話,你會發現很多問題都是打著補丁的,解決得並不徹底。

情景還原之後,優化團隊發現,微信緩存內存高達112M,遠遠高於大多數用戶幾M的大小。其根源就在於用戶的聯系人過多,而每一個聯系人的類結構有90個屬性,每個聯系人占用1K內台中二手設備收購存,所以就很容易達到瞭112M的內存。

問題分析清楚之後,方案設計的實現就變得非常簡單,無非就兩種方案:一是將聯系人的屬性降低到更小,這樣存儲就可以更小,二是采取比較直觀的解決方法 按需加載。最終微信優化團隊設置瞭15000名聯系人限制,微信允許這15000人一直在內存中存在,其中就包含所有好友,而對於群聊陌生人則通過按需加載,並給予額外10000的緩存上限。 實際應用後,我們發現,90%的用戶都不會達到這個上限。 陳嶽偉透露,他們做優化有一個原則,首要保障性能的損耗最小,影響的用戶最少。

最終,優化團隊完美地解決瞭爆內存的問題,平均可以降低用戶92%的內存占比。

比解決問題更難的是準確分析問題

問題的關鍵在於如何發現問題,分析問題,這個過程非常復雜,如果你的分析有理有據,可以找到問題根源所在,那麼解決問題就變得比較簡單瞭。 陳嶽偉還分享道,解決問題的時候盡量要做到區別對待,對正常用戶還是保持它原有的邏輯,而對重度用戶可以調整部分處理方式,這樣就可以保證應用的影響范圍降到最低,也可以讓應用的常規用戶得到完全無損的體驗。

在解決重度用戶的過程中,微信優化團隊也總結瞭一些經驗做法。

首先是要保證一切可量化。一切可量化需要做到哪種程度?在解決問題的過程中,他們發現需要有數據來做支撐,這不僅僅在影響范圍評估時可以量化,其實在問題分析、問題影響范圍評估、上線效果驗證等方面都需要有量化的指標。假設沒有任何的精確數據告訴開發團隊解決問題的詳細相關數據,那就沒有辦法真正有效地去解決問題。

其次是灰度上線。陳嶽偉透露,Facebook做瞭很多復雜的AB Test系統,包含瞭性能、廣告在內。微信也做瞭一個類似的AB Test,對用戶聯系人、賬號、消息等核心模塊進行改造時,均通過灰度方式,逐步放量實驗新的解決方案,發現問題就重新修復,再次灰度放量,直到穩定性非常高的時候,再全量放開發佈。

采訪最後陳嶽偉告訴記者,他希望可以通過一些更好的措施把重度用戶的事情做得更好。目前來看做得還比較初級,以後將通過一些探索,通過某一些場景的深刻研究,把重度用戶優化這件事情當作一個長期的事情來看待,能夠實現對重度用戶全局進行更精確的監控和分析,提升問題發現和定位能力。

采訪嘉賓:

陳嶽偉(Lylechen),微信客戶端開發團隊負責人,統籌微信在 iOS、Android、Mac 和 Windows 等平臺的開發管理工作。2010 年加入微信團隊,從無到有構建出微信的第一個 iOS 版本,並持續不斷進行架構優化和性能穩定性打磨。近年來主要關註微信終端監控體系以及微信重度用戶的性能提升和體驗優化。

APMCon2017

APMCon是由聽雲、極客邦科技與InfoQ聯合主辦的全球高水準APM技術盛會,聚焦當前最為關鍵的移動端、Web端和Server端的性能監控和管理技術。整個會議包含智能運維、數據庫性能優化、移動性能優化、前端性能優化、業務數據實時分析和可視化、微服務與容器與CDN加速等話題。

APMCon內容源於實踐並面向社區,來自國內外的演講嘉賓依據熱點話題,面向5年以上的技術團隊負責人、中高級開發和運維人員、工程總監分享APM技術創新、趨勢和最佳實踐。

【51CTO原創稿件,合作站點轉載請註明原文作者和出處為51CTO.com】

【責任編輯:周雪 TEL:(010)68476606】
點贊 0


每日頭條、業界資訊、熱點資訊、八卦爆料,全天跟蹤微博播報。各種爆料、內幕、花邊、資訊一網打盡。百萬互聯網粉絲互動參與,TechWeb官方微博期待您的關註。




↑掃描二維碼

想在手機上看科技資訊和科技八卦嗎?

想第一時間看獨傢爆料和深度報道嗎?

請關註TechWeb官方微台中二手廚具收購信公眾帳號:

1.用手機掃左側二維碼;

2.在添加朋友裡,搜索關註TechWeb。

台灣電動床工廠 電動床

台灣電動床工廠 電動床

AUGI SPORTS|重機車靴|重機車靴推薦|重機專用車靴|重機防摔鞋|重機防摔鞋推薦|重機防摔鞋

AUGI SPORTS|augisports|racing boots|urban boots|motorcycle boots

arrow
arrow
    全站熱搜

    won390b9r2 發表在 痞客邦 留言(0) 人氣()