Android网络超时的原因和解决办法

Android网络超时的原因和解决办法

网站的Android应用向服务器发送请求时,经常出现网路超时的现象,而IPhone应用却一切正常。

起初怀疑是我们Android应用中的BUG,但在排查过程中发现,通过Andorid浏览器访问网站的WEB页面同样会出现网络超时的问题。

这一发现让我们将排查的对象转移到服务器的配置上。最后确定问题的原因是我们将tcp_tw_recycle和tcp_timestamps同时打开了。

之前我们为了服务器性能优化,在nginx所在的机器上修改了内核的tcp设置,开启了tw_reuse和tw_recycle。

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

tcp_timestamps在CentOS中默认是打开的。

在linux内核中,如果tcp_tw_recyle和tcp_timestamps同时开启,内核会要求在60内同一源发出的tcp请求的timestamp是递增的。NAT下的机器共享同一个对外IP,每个机器的timestamp是随机生成的,这就导致当NAT下多个client同时访问服务器时,timestamp大的client能获得响应,而其他client被拒绝。

可是为什么IPhone应用不受这一限制呢?

原因是tcp_timestamp在IPhone中默认是关闭的,在Android系统中默认却是开启的。

解决办法:将net.ipv4.tcp_tw_recyle设为0, sysctl -p。

重设之后,该问题解决。

相关推荐

手机ip地址怎么设置
365会提款不成功吗

手机ip地址怎么设置

📅 08-03 👁️ 4588
【家长必看】考不上高中读什么学校好?
bat365bet

【家长必看】考不上高中读什么学校好?

📅 07-10 👁️ 8257
虬须是什么意思
bat365bet

虬须是什么意思

📅 08-04 👁️ 124
飞行堡垒i7散热性能如何?(解析飞行堡垒i7散热表现,以及其关键因素)
win10输入法怎么设置win10输入法设置方法【详细教程】
365会提款不成功吗

win10输入法怎么设置win10输入法设置方法【详细教程】

📅 07-31 👁️ 1728
5173平台怎么进行充值?充值步骤详解?
365bet体育在线网址

5173平台怎么进行充值?充值步骤详解?

📅 07-13 👁️ 7516