無線APP日誌上報優化實踐
緣起:無線時代,APP流量敏感,為了統計APP內使用者行為,或者需要收集某些產品資料,往往需要進行日誌上報,日誌上報往往又非常費流量,有沒有一些好的節省流量的優化方法呢,這是本文將要討論的問題。
一、APP可不可以不進行日誌上報,而單純從伺服器日誌統計使用者的行為和產品資料?
答:不行,有些使用者行為是不會與伺服器進行互動的(例如TAB的點選),從伺服器日誌無法完成所有統計。
二、APP通常有一些什麼方法來上報日誌?
答:常用方法有三種:
1)利用類似於Google Analytics的第三方工具進行上報
2)自己制訂私有協議進行上報(例如TCP二進位制協議),優點是節省流量,缺點是開發成本高
3)使用HTTP上報,例如通過GET引數傳遞需要上報的資料,這種方案使用最為廣泛。
三、APP上報日誌協議細節是怎麼樣的?
答:一般是在web-server下放置一個空檔案,APP通過發起HTTP請求訪問這個空檔案,通過GET引數傳遞資料,通過分析access日誌來得到想要的資料。GET協議一般又有兩種方式,約定格式法
+ KV法
1)約定格式法:約定分隔符,約定佔位符,約定每個欄位的含義,例如:
http://daojia.com/up?[bj][20151021][1939][1][login]
APP和server約定好,空白檔案是up,分隔符是[],第一個欄位[bj]是城市,第二個欄位[20151021]是日期,第三個欄位[1939]是時間,第四個欄位[1]是使用者id,第五個欄位[login]是行為
這個方法的缺點是,擴充套件性較差,有時候某些欄位沒有值,也必須在相應的位置保留佔位符(因為每個欄位是什麼含義都是事先約定好的),要想新增統計項,只能在GET後面新增[]
2)KV法:通過自解釋的kv方式來上報資料,上面的例子用KV法來上報,則上報形式為:
http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login
這個方法的優點是擴充套件性好(好太多了),缺點是上報資料量比較大,KEY其實是冗餘的字元
筆者強烈建議使用第二種方法來上報資料,後文會簡述一些流量的優化方法。
四、APP上報日誌,流量很大,主要矛盾是什麼?
答:筆者瞭解到的主要矛盾有:
1)無效的流量較多,HTTP請求內有很多無效資料
2)URL冗餘,每次都要上報URL
3)KEY冗餘,每次都要上報KEY
4)上報頻度高,每當使用者進行了一個操作都要日誌上報的話,HTTP量還是很大的。
五、有什麼優化的方法?
答:針對上述1)-4)的主要矛盾,逐一進行優化:
1)手動構造HTTP請求,儘可能多的去除HTTP中的無效資料,只保留GET /up
HTTP/1.1和GET傳遞的資料
2)使用盡可能短的域名來接收上報的日誌,例如s.daojia.cn/a
3)使用盡可能短的KEY來標識資料,例如city=bj可以優化為c=bj,日誌收集方注意規範好KEY
4)批量非實時上報,先將資料儲存到APP本地儲存(例如sqlite中),定時上報,這類優化對於PV類,SUM類,AVG類統計尤為有效,例如,要統計登入按鈕的點選次數,三次點選,傳統統計可能需要上報三次
http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login
http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login
http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login
優化後,只需要上報一次(注意加了一個count=3的引數)
http://daojia.com/up?city=bj&date=20151021&time=1939&uid=1&action=login&count=3
六、非實時上報,資料時效性怎麼保證?在什麼時機進行日誌上報呢?
答:資料的時效性會有一定的影響,但問題不大。為了優化,會在這樣的一些時間點進行上報:
1)特殊時間點:APP開啟時,APP關閉時等
2)按時間上報:例如每隔10分鐘上報一次
3)按資料量上報:例如每收集10條記錄才上報一次
一般來說上述三種優化方法會結合進行。
七、還有其他什麼優化方案?
答:資料壓縮也是一種常見的優化方案。
相關推薦
無線APP日誌上報優化實踐
昨天,和大家討論了無線APP時代如何進行DNS速度優化【回覆“dns”閱讀】,今天和大家一起討論一下無線時代的日誌上報流量優化。 緣起:無線時代,APP流量敏感,為了統計APP內使用者行為,或者需要收集某些產品資料,往往需要進行日誌上報,日誌上報往往又非常費流量,有沒有一
美圖App的移動端DNS優化實踐:HTTPS請求耗時減小近半
本文引用了顏向群發表於高可用架構公眾號上的文章《聊聊HTTPS環境DNS優化:美圖App請求耗時節約近半案例》的部分內容,感謝原作者。 1、引言 移動網際網路時代,APP 廠商之間的競爭非常激烈,而良好的使用者體驗是必須優先考慮的,美圖產品以高顏值著稱,對產品的使用者體驗非常重視。從技術的角
Kafka專案實戰-使用者日誌上報實時統計之編碼實踐
1.概述 該課程我以使用者實時上報日誌案例為基礎,帶著大家去完成各個KPI的編碼工作,實現生產模組、消費模組,資料持久化,以及應用排程等工作, 通過對這一系列流程的演示,讓大家能夠去掌握Kafka專案的相關編碼以及排程流程。下面,我們首先來預覽本課程所包含的課時,他們分別
【ios學習】優化 App 的啟動時間實踐 iOS
前言當用戶按下home鍵的時候,iOS的App並不會馬上被kill掉,還會繼續存活若干時間。理想情況下,使用者點選App的圖示再次回來的時候,App幾乎不需要做什麼,就可以還原到退出前的狀態,繼續為使用者服務。這種持續存活的情況下啟動App,我們稱為熱啟動,相對而言冷啟動就是
無線熱點(AP)不穩定之通道的配置優化實踐-分析周圍通道修改本地使用通道
現在的無線熱點裝置大都支援2.4G和5G兩個頻段,但目前支援5G的終端裝置還很少,故無線熱點裝置還是更多的被使用2.4G的頻段,而2.4G的頻段最多隻支援14個通道(且根據不同的國家而支援的又不一樣),根據文章http://blog.csdn.net/yygydjkthh/
15種最佳系統日誌優化實踐
前言 日誌用來記錄使用者操作、系統執行狀態等,是一個系統的重要組成部分。然而由於日誌並非系統核心功能,通常情況下並不受團隊的重視。在出現問題需要通過日誌來定位時,才發現日誌還存在很多問題。 日誌記錄的好壞直接關係到系統出現問題時定位的速度,同時可以通過對日誌的觀察和分
Android App包瘦身優化實踐
隨著業務的快速迭代增長,美團App裡不斷引入新的業務邏輯程式碼、圖片資源和第三方SDK,直接導致APK體積不斷增長。包體積增長帶來的問題越來越多,如CDN流量費用增加、使用者安裝成功率降低,甚至可能會影響使用者的留存率。APK的瘦身已經是不得不考慮的事情。在嘗
高德APP啟動耗時剖析與優化實踐(iOS篇)
前言最近高德地圖APP完成了一次啟動優化專項,超預期將雙端啟動的耗時都降低了65%以上,iOS在iPhone7上速度達到了400毫秒以內。就像產品們用後說的,快到不習慣。算一下每天為使用者省下的時間,還是蠻有成就感的,本文做個小結。 (文中配圖均為多才多藝的技術哥哥手繪) 啟動階段效能多維度
App性能優化淺談
app code 事件 詳情 網絡數據 記得 依賴 con 情況 前言 前段時間給公司的小夥伴們進行了關於app性能優化的技術分享。這裏我稍微整理一下也給大家分享一下。關於性能優化這個話題非常大,涉及面能夠非常廣,也能夠非常深入。本人能力有限,不會給大
HoloLens開發與性能優化實踐
visual 應用開發 啟動速度 腳本優化 效果 perf 獲得 屬於 性能 HoloLens中國版終於於5月底在中國上市,同時國內的技術社區經過一年的成長也有了很大的擴張,越來越多的開發者開始進入了HoloLens開發領域,嘗試著使用混合現實(Mixed Reality)
SLF4J - 借助SLF4J, 統一適配所有日誌實現為logback日誌實現的實踐
undle light apt vro bsp fda bce cdd eps 一、屏蔽各種日誌實現,去掉各種日誌實現的實現依賴 二、引入slf4j和各種日誌實現的適配器 1、引入slf4j 2、引入各種日誌實現的適配器(適配到slf4j) 3、引入logbac
MySQL的JOIN(三):JOIN優化實踐之內循環的次數
ted www str 連接 pri 記錄 font 語句 style 這篇博文講述如何優化內循環的次數。內循環的次數受驅動表的記錄數所影響,驅動表記錄數越多,內循環就越多,連接效率就越低下,所以盡量用小表驅動大表。先插入測試數據。 CREATE TABLE t1
App性能優化之內存優化
處理器 app https dma subst arraymap lru cache man onmeasure 本文為慕課網《App性能優化之內存優化》課程的學習筆記,視頻地址 (http://www.imooc.com/video/13670) ## 如何查看一個a
TensorFlow 優化實踐
指南 三角函數 -1 問題 enter 影響 lis ide 參考 【不要錯過文末彩蛋】 寫在前面的話 在前面一章中說到了TensorFlow的基礎用法,這一章作為一個進階來聊聊神經網絡的具體的結構和參數問題,包括: 前饋神經網絡循環神經網絡神經網絡參數大概就這三個中心內容
mysql 千萬級數據查詢效率實踐,分析 mysql查詢優化實踐--本文只做了一部分,僅供參考
open ges -a 效率 2萬 https ini class cnblogs 數據量, 1300萬的表加上112萬的表 註意: 本文只做了部分優化,並不全面,僅供參考, 歡迎指點. 請移步tim查看,因為寫的時候在tim寫的,粘貼過來截圖有問題,就直接上鏈接了.
Kafka運行環境優化實踐
clas 目錄配置 分布 發送 而不是 優先 提高 影響 分布式消息 Kafka高性能的特點及條件 Kafka是一個高吞吐量分布式消息中間件,並且提供了消息的持久化功能。其高可行有兩個重要的特點: 利用了磁盤連續讀寫性能顯著高於隨機讀寫性能的特點 並發,將一個topic拆
shell腳本開發環境的配置和優化實踐
shell腳本 就會 開發環境 odin sha 錯誤 aqi set ash vim路徑等配置知識的整理見表: 相關配置文件 功能描述 .viminfo 用戶使用vim的操作歷史 .vimrc 當前用戶vim的配置文件 /etc/vimrc 系統全局vi
基於多級緩存的充電系統優化實踐
n) 解決 清理 moni 組織 超時時間 microsoft ole rim 基於多級緩存的充電系統優化實踐 原文是發表在文章中,剛看了下文章主要用於轉載,因此在隨筆中重新發布一下。 摘要 正如前文中《海量並發下充電業務優化實踐》所述,在充電過程中由於涉及到大量的實時數據
solr億萬級索引優化實踐-自動生成UUID
parse zkclient direct use 參與 客戶 lrj 網速 ret solr億萬級索引優化實踐(三) 原創 2017年03月14日 17:03:09 本篇文章主要介紹下如何從客戶端solrJ以及服務端參數配置的角度來提升索引速度。
ELK日誌分析系統實踐
ELK一、ELK介紹 官網: https://www.elastic.co/cn/ 中文指南 https://legacy.gitbook.com/book/chenryn/elk-stack-guide-cn/details ELK Stack(5.0版本後)-->Elastic St