RxDownload2 檔案下載太慢分析

weixin_33830216發表於2019-01-04

專案經驗,如需轉載,請註明作者:Yuloran (t.cn/EGU6c76)

前言

這個 bug 本不應該定位這麼久,只是最近狀態實在是太差了,無論是心理上還是身體上,都感覺非常的疲憊。

Bug 現象

使用 RxDownload2 下載檔案時,要等很久(平均6s以上),才開始重新整理進度。

定位分析

從理論上看,使用 @Streaming 的方式下載檔案,在與伺服器建立連線後應當立即返回,只有從輸入流開始讀資料時才會阻塞。但是,現在下載進度重新整理需要等待這麼久,看起來像是已經下完了才開始重新整理。從 okhttp 的日誌看,這段時間確實是發起 GET請求End Http 的時間,那麼這期間肯定出了什麼問題。okhttp 框架應該不會有問題,那隻能是我們的攔截器有問題,如果攔截器中呼叫了讀取資料的方法,就會導致阻塞。

Bug 原因

嗯,加解密攔截器、日誌攔截器中都呼叫了 response.body() 方法,所以導致了阻塞。

Bug 修復

分析業務,下載檔案時無需對報文進行加解密,所以刪掉即可。同時重寫一個針對下載的日誌攔截器,不呼叫 response.body() 方法,就解決了。

其它

哈哈,定位這個問題哪有上面說的這麼簡單,專案原因就不多說了。

RxDownload2 系列文章: