APP网络性能测试白皮书(一)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: 资源类性能中,磁盘、内存、CPU是本地资源,但是除了这些之外,还有一个特别的存在——网络,之所以特别是因为它是外部资源。对于移动互联网来说,优化网络的性能非常重要。而我们优化网络性能无非看三个问题:业务成功率、业务网络时延、业务宽带成本。

基本概念



业务成功率


有两个真实的场景是用户可能遇到的:一个是点外卖时进了电梯,一个是听演唱会时上传照片。就大家的体验来说,这是最有可能发送失败的场景。刚好,这两个场景分别代表两种典型的网络差的场景,进电梯代表弱信号网络,而演唱会则代表拥塞网络,处理不当都会直接影响业务的成功率。


弱信号,可以简单看成当手机信号只有一两格的时候,这时不仅仅是信令(无线网络其实通信的都是一个个信令)发出去困难,而且还有可能导致不断切换网络、切换基站。App能做的,就是在应用层做重试,因为很有可能这个弱信号是一时的。


另外一个是拥塞网络,简单地理解就是,堵车、排队,数据包排队,信令也在排队。这时App不断重试,只会使得拥塞更为严重。最多能做的就是让自己的非核心业务不要捣乱,不要也去排队,让核心业务的数据量更少,协议来回更少。


业务网络延时


比起成功率,网络延时虽然影响没这么直接,但是慢带来的不爽,也是会流失用户的。这个慢就必须从一个数据包的发送历程开始说起,如图所示。以下我们来对业务网络延时的原因作逐个分析。

image.png

DNS解析,简单来说就是域名换IP。这一步看似简单却是充满陷阱,10分钟的DNS Cache过期时间,200~2000ms不等的DNS解析耗时,就像猪一样的队友,坑了无数应用。解决无非有三个策略:IP直连、域名重用、HttpDNS(简单来说就是利用自定义的协议获取域名对应的IP地址,甚至是列表)。


建立连接,大多数应用都是基于TCP的,所以无非就是三次握手建立TCP连接。这一步的耗时,如果是长连接的话,就是一次消耗,短连接则是每次都会有这个消耗。要维护长连接就必须要心跳包,心跳包多,会耗电,特别是当心跳间隔等于移动网络状态机Active-Idle切换间隔时,简直就是悲剧,同时对于移动网络来说还会增加信令通道的负担;心跳包少了,会让连接在NAT中超时,导致长连接断开。在建立连接的过程中,TCP会进行一些商定,其中影响网络时延最明显的就是窗口。


接收窗口,用于拥塞控制。以发送图片为例,服务器的接收窗口就像你告诉客户端,我的池子有多大,你就放多少水给我,客户端放多少水涉及同一时间发送多少TCP数据包,当前的带宽有没有被充分利用,直接影响发送的速度。而让窗口太少的原因无非几个:①服务器的ReceiveBuffer太小;②因为慢启动,而包又太小,刚刚连接,慢启动会逐步放大窗口,没有等放大完,数据就发完了;③Window size scaling factor失效,这里最有可能的原因是网络代理,失效的结果就是窗口最大只有65536字节。


业务宽带成本


如果说一定要考虑流量的原因,除了流量大对业务成功率和网络时延的影响外,就应该是宽带成本了。对于视频、图片这些富媒体业务,每天在宽带成本上的投入,跟烧钱没什么区别。如何节省这些成本,同时也为用户带来好处呢?策略有压缩、增量、去重复三种。


先说压缩,图片用WebP压缩、PNG压缩,还可以用progressive jpeg的不同程度压缩来替代大中小图,视频用H264、H265压缩,文本用gzip压缩和其他ZIP压缩方案。除此之外还有一些细节可以说说:①图片的尺寸在不同分辨率的屏幕上要下载不同的尺寸,设计时要注意;②WebP图片的编码和解码对于手机是有压力的,CPU消耗是JPEG的3倍以上,编码耗时也比JPEG要长不少。所以使用的时候要注意,千万不要是性能压力大的场景。建议解码后在本地保存成JPEG,以降低下次解码的压力。


增量,要做增量,协议的复杂度会上升不少。因此也不要强求,关键要看业务是不是经常变化与业务的规模。


最后是去重复,表面上这看是最简单的问题,但是却最常见。如压缩包里面的图片和没有压缩的内容重复,CSS里面的内嵌图片与压缩包里面的图片重复。



相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
2月前
|
SQL 安全 测试技术
网络安全的屏障与钥匙:漏洞防护与加密技术解析软件测试的艺术:探索性测试的力量
【8月更文挑战第27天】在数字时代的海洋中,网络安全是保护我们数据资产的灯塔和堤坝。本文将深入浅出地探讨网络安全领域的关键要素——安全漏洞、加密技术以及不可或缺的安全意识。通过实际案例分析,我们将了解如何识别和修补潜在的安全漏洞,掌握现代加密技术的工作原理,并培养起一道坚固的安全防线。文章旨在为读者提供实用的知识和技能,以便在日益复杂的网络环境中保持警惕,确保个人及组织信息的安全。
|
2月前
|
机器学习/深度学习
神经网络与深度学习---验证集(测试集)准确率高于训练集准确率的原因
本文分析了神经网络中验证集(测试集)准确率高于训练集准确率的四个可能原因,包括数据集大小和分布不均、模型正则化过度、批处理后准确率计算时机不同,以及训练集预处理过度导致分布变化。
|
16天前
|
测试技术
基于LangChain手工测试用例转App自动化测试生成工具
在传统App自动化测试中,测试工程师需手动将功能测试用例转化为自动化用例。市面上多数产品通过录制操作生成测试用例,但可维护性差。本文探讨了利用大模型直接生成自动化测试用例的可能性,介绍了如何使用LangChain将功能测试用例转换为App自动化测试用例,大幅节省人力与资源。通过封装App底层工具并与大模型结合,记录执行步骤并生成自动化测试代码,最终实现高效自动化的测试流程。
30 4
|
2月前
【Azure App Service】同一个App Service下创建多个测试站点的方式
【Azure App Service】同一个App Service下创建多个测试站点的方式
|
2月前
|
网络协议 Go Windows
【应用服务 App Service】App Service中抓取网络日志
【应用服务 App Service】App Service中抓取网络日志
|
2月前
|
网络协议 安全 前端开发
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
|
2月前
|
测试技术
一款功能完善的智能匹配1V1视频聊天App应该通过的测试CASE
文章列举了一系列针对1V1视频聊天App的测试用例,包括UI样式、权限请求、登录流程、匹配逻辑、消息处理、充值功能等多个方面的测试点,并标注了每个测试用例的执行状态,如通过(PASS)、失败(FAIL)或需要进一步处理(延期修改、待定、方案再定等)。
39 0
|
2月前
【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限
【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限
|
2月前
|
网络协议 Linux 网络安全
【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
【Azure 应用服务】更便捷的方式抓取Azure App Service for Windows的网络包
|
2月前
|
存储 Linux 网络安全
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
【Azure 应用服务】App Service For Linux 如何在 Web 应用实例上住抓取网络日志
下一篇
无影云桌面