App崩潰分析:如何監控http請求并做出優化?

jopen 9年前發布 | 26K 次閱讀 Android開發 移動開發 APP


移動互聯網時代,移動App與服務器之間的交互越來越頻繁,數據量也越來越大,伴隨而來的各種網絡連接問題也在影響著各App的留存率。如何保證http請求的質量成為開發者們需要解決的一大問題。本文著重講述http請求遇到的問題以及該如何監控和優化。

http請求遇到的問題

在App開發過程中,通常是用無線網絡去做測試,這樣網絡的連通率、速度以及響應時間都是處在一個相對理想的情況下,但是在App發布后,用戶使 用場景往往是2G、3G,以及一些網絡水平初級的地區,網速和連通率都在一個不穩定甚至極低的水平,這時,一系列的問題隨之而來,其中我們主要討論兩點:

  • 響應時間:由于網絡速度的下降, 響應時間開始變長,同一個url的訪問時間可能會成倍增長,增加用戶的等待時間;
  • 錯誤率:由于網絡質量的下降,丟包錯包概率成倍增長,由于請求的錯誤也會導致服務器端處理錯誤率的提高,可能會造成返回數據為空或者錯誤,致使用戶增加使用成本。

如何去優化?

應用向服務器發送http請求,一般都是調用的系統接口或者第三方接口(比如OKHttp):

App崩潰分析:如何監控http請求并做出優化?

這個時候,我們可以在應用調用接口時,加一個收集模塊來采集http信息,如圖:

App崩潰分析:如何監控http請求并做出優化?

Collection module可以用不同的實現方式:iOS利用Runtime通過代碼注入的方式去獲取相關信息;Android通過自定義URLStreamHandler去獲取http信息,之后通過一些統計工具可以直觀地去分析和優化應用的網絡模塊。

如何利用網絡監控去做優化?

那么,究竟該如何利用好網絡監控來進行應用優化?開發者可以從http響應時間、http錯誤率、請求量(rpm)和Data I/O四個維度監控http請求,并監測每個url的運營商、終端設備、錯誤碼。同時,地理定位功能可以提供每個地區網絡狀況的平均值,方便開發者去分析 和優化。

  • http響應時間

通過響應時間的長短,可以判斷哪個url去優化,如果響應時間長,是不是后臺查詢過慢?還是因為運營商基站建的少網絡信號差?

  • http錯誤率

通過錯誤率,可以知道訪問某個url時最多的錯誤碼是多少,根據錯誤碼去確定是請求錯誤還是服務器錯誤,從而縮小問題的查找范圍。

  • 請求量(rpm)

通過查看url的請求量,可以去推斷用戶的喜好,從而做一些定制化的服務,也可以通過這個指標去確定App端發請求頻率是否正常。

  • Data I/O

通過Data I/O,可以知道某個url的請求數據大小是否正常,是否流量過大可以進行壓縮從而節省用戶的費用。

App崩潰分析:如何監控http請求并做出優化?

當然,每個指標不是獨立的,而是應該綜合來判斷。舉一個例子,做一個在線圖庫的應用,用戶反映一直刷不出圖,那就可以這樣推斷一下:看http響 應時間,如果正常,有可能是App收到數據后顯示有問題,如果過長,那么可能是服務器端問題;再看錯誤率,如果很高,那么有可能是服務器返回結果有問題, 如果不高,那么有可能是因為網絡信號差導致的。

這個時候,再看一下請求量和Data I/O,如果請求量很小,但是Data I/O很高,那么是否可以優化http請求策略?如果改成每次請求一屏的數據,根據用戶的翻頁情況發送多次請求,而不是一次去請求幾頁數據,那么這樣數據 總量沒變,但是用戶看到的效果卻是每翻一頁,只要很少的時間就可以顯示出圖片,這樣就可以提升用戶體驗。

簡單論述了網絡問題對于移動App產生的影響,以及如何去監控http請求并做出優化。當然,實現監控的方式有很多,也可以有很多技術上的玩法,但無論技術實現得有多好,如何優化App?提升用戶體驗和留存率,才是開發者最該關心的問題。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!