安卓APP首次连接服务器非常慢的问题分析

近期项目中的安卓端App,客户反馈有登录连接慢,耗时长的问题.在测试验证后,有以下分析:

出现条件

  1. 使用https连接的正式服务器环境.
  2. 安卓手机.
  3. 使用中国电信手机卡的流量进行连接.
  4. App冷启动.

在同时满足以上4点条件的情况下,安卓用户会出现App登录很慢的情况.登录是首次连接,从请求到响应需要30s左右的时间.登录成功后,后续请求连接的速度恢复正常.

问题分析和解决尝试

  1. 正式环境下,服务器使用的是https加密的安全连接方式.https的连接方式相对于传统的http连接方式在安全性上有极大提升.但是因为加入了加密解密的步骤,连接速度相对会慢一些.但是据我对https的理解,首次对称秘钥的传输才采取非对称加密的方式,后续的数据传输还是使用的对称秘钥加密的方式,虽然有加密和解密的过程但是应该不会耗费这么长的时间.而且在第一次连接成功后,后续的请求收发速度都会恢复正常.这个问题导致的可能性不大.
  2. 为了iOS客户端能上架到Apple市场,服务器必须提供IPv6的解析方式.而IPv6还远远没有达到普及的阶段,不同网络运营商的解析线路各有不同,可能存在国内->国外->国内的曲折解析路线.造成解析速度的较大延迟.按照网上的说法关闭服务器Nginx的IPv6解析后(注释listen [::]:80 ipv6only=on;后,reload.因为是线上环境没有重启Nginx或服务器.),问题依旧.不知道是解析没有关闭彻底还是有缓存这一类因素.
  3. 看了这个帖子后发现问题描述是一模一样的,修改接入点从ctnet到ctwap,连接速度一下就恢复正常了,但是服务器已经关闭了IPv6的解析(不能断定肯定关闭了),也不能要求用户添加接入点(测试过的3部手机里面小米手机有ctwap接入点可以选择,华为和vivo只有一个ctnet接入点),后面发现不用添加ctwap接入点,只需要将现用接入点里面的APN协议修改为IPv4.效果也一样,一下就能恢复正常.
  4. 同一个服务器,同一张电信卡,iOS客户端连接速度是正常的.难道iOS接入点的APN协议是IPv4么?这个没有查到.
  5. 参照《Android 网络问题调试经验》,使用tcpdump进行了电信网环境下的抓包分析,
    在这里插入图片描述
    确实有丢包现象,关闭了安卓机的tcp_timestamps后问题依旧.而且检查服务器的配置tcp_tw_recycle=0,tcp_timestamps=1属于建议配置.至此问题还是没能解决.
  6. 联系中国电信客服人员,反应具体情况后,电信客服人员表示他查不到是什么问题,问了技术也说没有什么办法,叫我去营业厅问问.呵呵?了.
  7. 后续进行了IPv6的验证.在运行同样代码的UAT测试服务器上,添加了IPv6的解析跳转,设置和正式服务器相同.使用电信流量连接测试,没有延迟的情况.故目前判断问题很大可能性出在https上.待验证.
  8. 后续在正式服务器上关闭了https的解析,直接使用http进行连接,问题依旧.
  9. 更换正式服务器的域名.使用之前的UAT的域名,更改解析为正式服务器,连接正常.修改之前的open.xxxxx.netopen1.xxxxx.net连接速度也正常.最终判定可能是https证书签发时的域名保护的问题.这方面知识很是欠缺,可能存在描述错误.
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值