网络连接中断,AFNetworking提示code=-1005

一、网络报错背景

近期公司线上APP(iOS端)出现网络连接中断,用户使用WiFi没有问题,使用4G偶尔会出现“网络连接中断。”提示语,连机检查,发现使用AFNetworking报错code=-1005,网络连接中断。由于之前没有出现过这种问题,是在APP运营一段时间之后,出现的,所以排除了APP代码问题,但是我还是想看一下客户端应该如何解决这个问题。

二、解决方案选择

出现这种情况后,公司成立了应急小组,在网上找了好几个帖子,进行测试。使用方案如下:

1.由于公司项目中使用的AFNetworking是2.x版本,然后进行AFNetworking框架升级,升级到3.2.1版本,使用4G频繁调用接口,还是会出现这种情况。此方案不能解决我们本次问题。

2.在网上看了帖子,有的说是模拟器会出现这种情况,重启模拟器,会解决。而我们是在真机上出现的问题,就重启手机。然后进行测试,依然没有解决这个问题。此方案不能解决我们本次问题。

3.有的帖子说是需要修改请求的header,设置Keep-Alive,于是进行了如下的配置并测试:

a>.运维同事在服务器设置:1.“Connection”:“Keep-Alive”,2.“Keep-Alive”:“timeout60000”;(参考文章)此配置的详细说明,大家可以自行查找,下面截图是查看的帖子说明,此方案不能解决我们本次问题。


参考文章

b>.关闭“Keep-Alive”,由客户端设置header里面Connection: close。此方案不能解决我们本次问题。

3.客户端实现,出现code=-1005的情况时,自动重新发起请求一次。此方案比较繁琐,而且不能解决线上APP的问题。

三、我们使用的解决方案

经过了两天的方案查找以及测试,并没有找到合适的解决方案,于是进行HTTP底层连接解读,然后根据APP调用网络请求出现丢包的问题。发现可能和服务端时间戳认证有一定的关系,于是我们对Nginx上面的tcp_timestamps=1进行关闭,设置成tcp_timestamps=0。然后进行上线使用,发现能解决本次问题,但是服务器会出现time_wait激增的情况(在可接受范围内)。但是线上APP的“网络连接中断。”不再出现,为了优化这个配置,我们进行设置tcp_tw_recycle = 0 ;发现无论tcp_tw_recycle和tcp_timestamps 任何一个只要设置为0,都能解决我们的问题,但是都会导致time_wait上涨。目前我们正在进行相关的优化,有知道的同学可以私信我。谢谢

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.TCP报头格式 UDP报头格式 TCP报头格式 UDP报头格式 具体的各部分解释看 TCP报文格式详解 - ...
    杰伦哎呦哎呦阅读 2,493评论 0 5
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,354评论 0 6
  • 〖《中华新韵》五微〗 半融残雪树旁堆,晴日寒风草上吹。 惟有窗前水仙子,盛装含笑迎春归。
    雕虫小吏阅读 605评论 0 4
  • 空白的夜, 任由灵魂书写诞生, 雪花会繁荣。 我有一季的敏感, 所以无法安眠, 无法安心, 想找一个屏风的犄角, ...
    燃箭滴红叶阅读 341评论 4 19
  • 疼痛之后依然死心不改,可能就是我喜欢她的证据。 这点挫折现在看起来可能确实不算什么,但对于当时的我来说就如同死了一...