网络优化

作者: flynnny | 来源:发表于2021-03-25 00:56 被阅读0次

1网络优化从哪些维度开展

网络优化介绍

正确认识:
1网络优化维度:多维
仅仅重视流量不够

2网络流量的消耗量:精确
整体均值掩盖单点问题

3网络相关监控:全面
粗粒度监控不能帮助我们发现、解决深层次问题

网络优化维度

1流量维度
一段时间流量消耗的精准度量,网络类型、前后台
监控相关:用户流量消耗均值、异常率(消耗多、次数多)
完整链路全部监控(Request、Response),主动上报
2网络请求质量
用户体验:请求速度、成功率
监控相关:请求时长、业务成功率、失败率、TOP失败接口
3其他
公司成本:带宽、服务器数、CDN
耗电

网络优化误区

只关注流量消耗,忽视其他维度
只关注均值。整体,忽视个体

2网络优化工具

Network Profiler

AS自带,显示实时网络活动:发送、接收数据及连接数
需要启用高级分析
只支持HttpURLConnection和Okhttp网络库

演示:

先打开这个功能

1.png 2.png

抓包工具

Charles(java开发MAC上使用的多);
Fiddler(Windows上使用的多);
Wireshark;
TCPDump

Stetho

强大的应用调试桥,连接Android和Chrome
网络监控、视图查看、数据库查看、命令行扩展等

3.png

Stetho不是很强大,一般情况下不使用

4.png

3精准获取流量消耗实战

如何判断App流量消耗偏高
.绝对值看不出高低
.对比竞品,相同Case对比流量消耗
.异常监控超过正常指标

测试方案:
.设置---流量管理
.抓包工具:只允许本App联网
.只抓域名之下的请求行不行?不行,使用了3方sdk 也会有
.线上场景线下可能遇不见

线上线下流量获取

线上:

1、TrafficStats:API8以上重启以来的流量数据统计
getUidRxBytes(int uid)指定Uid的接收流量
getTotalTxBytes()总的发送流量

总结:不采用他的原因:无法获取某个时间段内的流量消耗,无意义

2、NetworkStatsManager:API23之后流量统计
可以获取指定时间间隔内的流量信息
可以获取不同网络类型下的消耗

5.png 6.png

前台后台流量获取

难题线上反馈App后台跑流量
只获取时间段不够全面

7.png

还是用上面的方法,设置时间段参数,写一个定时任务

9.png 8.png

4网络请求优化实战

使用网络请求的场景概述

数据:API、资源包(升级包、H5、RN)、配置信息
图片:下载、上传
监控:Apm相关,单点问题相关

数据缓存

服务端返回的加上过期时间,避免每次重新获取
节约流量且大幅提高数据访问速度,更好的用户体验
Okhttp、Volley都有较好的实践

Okhttp数据缓存实战

创建拦截器

10.png 11.png

数据增量更新

加上版本概念 只传输有变化的数据
配置信息,省市区县等更新

数据压缩

Post请求Body使用GZip压缩
请求头压缩
图片上传之前必须压缩

优化发送时机和频率

合并网络请求,减少请求次数
性能日志上报:批量+特定场景上报

图片相关
优先使用缩略图
云服务里提供转化则可使用Web格式图片

5网络请求质量优化实战

质量指标

网络请求成功率
网络请求速度

Http请求过程
请求到达运营商的DNS服务器并解析成对应的IP地址
创建连接TCP三次捂手,根据IP找到相应的服务器,发起一个请求
服务器找到相应资源返回。

DNS相关:
问题:DNS被劫持,DNS解析满
方案:使用HttpDNS绕过运营商域名解析过程
优势:降低平均访问时长、提高连接成功率

协议版本升级

三次握手时间长,效率低
1.0:版本TCP连接不复用(已被淘汰)
1.1:引入持久连接,但数据通讯按次序进行。前面慢后面等
2:多工,客户端、服务器双向实时通信

网络请求质量监控

接口请求耗时、成功率、错误码
图片加载的每一步耗时

结合Okhttp实现质量监控

12.png 13.png 14.png 15.png 16.png 17.png

其他
CDN加速,提高带宽。动静资源分离(更新后清理缓存)
减少传输量,注意请求时机及频率
Okhttp请求池

6网络体系化方案建设

线下测试相关

方案:只抓单独APP
侧重点:接口请求是否有误、多余,网络切换、弱网、无网测试。(loddning停止)

线上监控相关

服务端监控
1请求耗时(区分地域、时间段、版本、机型)
2失败率(业务失败与请求失败)
3Top失败接口、异常接口

客户端监控
1接口的每一步详细信息(DNS、连接。请求等)
2请求次数、网络包大小、失败原因
3图片监控

异常监控体系
1服务器防刷:超限拒绝访问
2客户端:大文件预警、异常兜底策略
3单点问题追查,具体分析日志

7模拟面试

1在网络方面做了哪些监控,建立了哪些指标
体现演进过程
并不是一上来就做,wifi成功率高,用户逐渐反馈打不开,流量多,要有数据支撑,和网络体验怎样。补上网络相关监控:质量监控和流量监控。请求成功率和耗时(质量)精确流量消耗,前后台(流量)

2如何有效降低用户流量消耗
梳理接口做缓存,增量更新(省市区县)
上传是对body压缩,图片发送强制压缩
图片展示:feed界面是缩略图,详情里是大图。webP格式使用(云服务支持)

3用户反馈话费流量多怎么查
情况肯定存在,遇到异常情况。
.有数据支撑,建立精准流量获取能力。
.所有请求大小及次数的监控。异常逻辑导致重复下载等
.主动预警能力

相关文章

网友评论

    本文标题:网络优化

    本文链接:https://www.haomeiwen.com/subject/ybzecltx.html