網絡請求失敗記錄(安卓4g網絡下第一次請求特別慢或者失敗)


最近app的一次版本上線以后出現4g網絡下請求接口特別慢,第一次調用接口非常非常慢或者直接訪問失敗,后面就正常了,但是WiFi情況下並不會出現這個問題。最主要的是IOS的線上app並沒有問題。

開始懷疑是項目本身的網絡框架太老(httpclient)導致的,所以把幾個地方換成了OKHttp,換完之后問題依然存在,所以排除了網絡框架的可能性。

開始查資料,原來有很多同學遇到過相關問題,導致此問題的可能性總結下來無非以下幾點:

1、后台服務器有2種解析方式,分別是ipv4和ipv6。android 默認是不支持ipv6的,但是蘋果是支持的,如果要讓android支持ipv6需要root。

2、tcp_timestamps導致包被拋棄,客戶端改這個參數要root,需要將服務器的net.ipv4.tcp_timestamps設置為0。

    在linux中如果是tcp_tw_recycle被打開了話,會假設對端開啟了 tcp_timestamps,然后會去比較時間戳,如果時間戳變大了,就可以重用。tcp_timestamps記錄的是從開機到現在所經過的秒數,tcp_tw_recycle在開啟后會比較同一公網ip下的tcp_timestamps,所以在同一wifi下,在第一次SYN的時候,tcp_timestamps如果比其他設備的tcp_timestamps小的話,包就直接被丟棄。

 

By LiYing


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM