APP請求超時問題-ios超時-android超時


最近發現公司的app在高峰期超時嚴重.用wifi網絡一直超時,但qq等卻正常.換成手機卡網絡正常.

起初以為是DNS解析問題.

后來抓包,發現DNS解析正常,可以得到正確的A記錄.

但tcp retransmission嚴重.

 

因為app內使用了友盟等第三方庫,他們的DNS,tcp握手均正常.

而我們的app卻tcp retransmission嚴重.

 

后來找到一篇文章,照着修改了服務器配置...超時少了.

下面是轉發文章內容

內網有一台APP服務器,接口是通過Nginx發布的。手機通過無線登陸APP,有時候提示連接超時。

無線路由器和APP服務器,是通過內網交換機連接的。應該不會超時啊,可能是路由器問題。

然后換了好幾個路由器,小米mini,華碩RT-AC87U,TP-LINK WVR1750G

咨詢廠商,測試了一下,當時超時的時候,訪問百度視頻什么的是正常的。路由器沒有問題,可能是服務器問題。因為服務器是pc機主機,配置比較差,后來換成DELL R620,還是同樣的問題。

因為公司周圍有30幾個無線,2.4G傳輸速度是450M,可能是無線干擾問題。

最后買了一個Nighthawk X6 R8000,2.4G傳輸速度是600M,發現還是有超時。

網上搜索資料nginx超時問題,優化了一些參數,發現還是有超時。

手機安裝(Ping & DNS)軟件,版本是2.3,用TCP Ping持續測試dts.xx.com,

大約1~2分鍾,提示connection timed out,超時會持續一分鍾。出現超時的時候,手機登陸APP,就會提示連接超時。

然后超時的時候,在服務器抓包

[root@localhost ~]#tcpdump -i eth0 -s0 -w a.cap

 

發現無線路由器向服務器發送了SYN請求包,但是沒有得到服務器回應。

出現TCP Retransmission(TCP 包重傳)

因為服務器開啟了tcp_tw_recycle(為了支持高並發)

tcp請求回收,如果開了這個,那在默認60s內同一個ip包過來是會被回收的

網絡過來的數據包的時間肯定是小於這個請求時間的,那么服務器就會認為他是無效的連接,就會拒絕連接,所以才會出現TCP包重傳。

所以才會出現上面的現象,超時持續一分鍾。

后來我把tcp_tw_recycle關了

vi /etc/sysctl.conf

設置為0,表示關閉

net.ipv4.tcp_tw_reuse = 0

net.ipv4.tcp_tw_recycle = 0

加載配置

[root@localhost ~]#sysctl -p

最后再次用TCP Ping測試,測試20分鍾,沒有出現連接超時。

APP刷新數據,也沒有出現超時。

哎,解決這個問題,之前都是靠瞎猜的。分析問題沒有層層刨析,搞了這么長時間,才搞定。

路由器只提供數據轉發功能,只要轉發了,它的任務就完成了。

應該是服務器問題,然后抓包,為什么服務器沒有回應?

為什么出現TCP Retransmission(TCP 包重傳)?

這樣問題就越來越接近真相了,就好解決了,就好像福爾摩斯一樣。

后來發現系統日志出現

Jun 19 11:13:45 127.0.0.1TCP: time wait bucket table overflow

那就只能增加net.ipv4.tcp_max_tw_buckets的值

net.ipv4.tcp_max_tw_buckets = 100000

加載配置

[root@localhost ~]#sysctl -p

再次觀察,就沒有了。

http://www.51itong.net/nginx-app-12760.html
---------------------
作者:james_1010
來源:CSDN
原文:https://blog.csdn.net/james_1010/article/details/50387659
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

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



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