有种速度让你望尘莫及
《有种速度让你望尘莫及》要点: 作者介绍:
导语移动互联网发展那么快,运维技术也要适应业务的变化啊,这次小编找了腾讯牛人介绍的手机QQ和手机Qzone的速度优化实践. 我们坚信不同垂直领域的运维分工会越来越不同,如何能在不同的业务形态上,利用运维技术和数据为业务带来更大的价值,将是我们下一步探索的重点方向. 1. 关于用户等待时间对用户来说,最直观的感受就是APP的等待时间,所以我们首先要分析清楚APP到底在哪里让用户等待,耗时在哪里. 等待时间无非就以下三个: QQ/Qzone等产品由于已经有多年的Server端优化,大部分数据都是直接读写nosql数据库,接口耗时基本都在30-120ms,优化Server实际的收益并不会很大. 2. 网络传输首先我们需要统计数据在网络传输的耗时情况,才能知道优化网络传输有多少价值 2.1 网络传输耗时统计网络耗时通过TCP协议的三次握手在服务端进行统计,优点是简单快速低成本,具体方案如下:
图2.1 从服务端测网络延时 通过实际数据统计,在不跨网访问的情况下(信号正常): 从速度结果上看,目前主流的3G/4G网速还是相当不错的,但是由于移动网络的复杂性,从QQ和空间的业务返回码监控上还是发现有不少问题: 下面分享下手机Qzone在接入组件的优化策略 2.2 手机Qzone WNS接入策略简介:WNS,手机QQ空间APP到服务端通信框架,支持tcp、http协议 2.2.1使用私有协议直接IP长连接访问(图2.2)优点: 缺点:由于不走域名,首次连接需要额外的策略来找到合适的接入点,并且需要有重定向能力 图2.2 私有协议直接IP长连接 2.2.2 首次连接策略世界上最遥远的距离就是你在联通,而我在电信.在复杂的移动网络环境下,我们需要优化网络的接入策略避免跨网/跨地区访问. 使用移动网络时我们先识别用户的运营商,同时起4个连接,多个接入IP+多个端口+2种协议,再同时使用2种协议和多个端口是为了避免有些本地运营商的限制,使用第一个连接上的连接(见图2.3) 图2.3 首次并发尝试连接 使用WIFI的用户首次连接会优先使用域名尝试连接. 当上面策略都连不上时客户端会运行打分策略,使用备份IP列表连上一个速度最快的接入. 腾讯拥有国内大量的CDN节点,即使是偏远地区也可以通过CDN节点接入做为代理! 优点:多种首次连接策略能有效的保证用户最大可能的先连上服务器,这在复杂的移动网络中特别重要! 缺点:首次连接有额外开销;连接上不一定是最优的接入点;使用CDN节点做为代理接入成本较高 2.2.3 最优接入&重定向连接上之后服务端通过GSLB IP库识别用户的出口IP,如果发现用户的接入不是最优的接入,通过大数据分析该用户在某个时段最应该使用的接入点,会下发重定向指令,让客户端连接到最优的服务端接入IP,WIFI下还会缓存住SSID和接入IP. 优点:让用户能就近/最优接入,减少网络的耗时 缺点:少部分用户首次使用需要连接2次服务器; 2.2.4 使用字典做数据压缩减少带宽开销;安全 2.2.5 心跳避免长连接断开 2.2.6 单连接并发请求相对多连接单请求的传统HTTP模式(HTTP 2.0之前),用单连接可以大大减少客户端和服务端开销 结论移动网络上我们能做的优化无非就是减少连接,减少请求,避免跨网跨区,优化协议.而随着4G/光纤的快速发展,以后越来越多用户在网络上的耗时会越来越少,意味着我们网络策略上的优化效果收益也会越来越低,这时我们把目光投向终端. 3. 终端耗时同上,首先需要确认终端的耗时情况以确认优化预期和目标. 通过在客户端埋点的上报监控,发现手机Qzone某个灰度版本用户一些操作之后3秒以上没响应比率最高达30%;手机QQ某个灰度版本由于UI问题导致画面掉帧比率约15%,在投诉的问题分类中,卡、慢、卡顿投诉量长期居前三甲. 可以得出这样的结论:终端的问题很严重,而且跟用户操作体验直接相关! 3.1 Android/IOS系统背景既然是想优化移动客户端,那对于操作系统(Android和IOS)需要有个基本的了解,两者都是基于UNIX/LINUX开发的系统,对于运维人员来说很多概念都很好理解. 其中比较重要的一条设计理念是:Android和IOS都能进行多线程开发,其中有一个是主线程也称UI线程,UI线程是唯一有权限操作用户UI的线程,如果用户在操作有体验上的问题,那肯定是因为主线程被堵塞或没有足够的运行资源.所以从主线程的监控和系统资源的占用入手. 3.2 监控的策略(编辑:ASP站长网) |