网络性能评价方法

简介: 网络性能评价的实现网络的优劣会影响网络交互的延迟时间、稳定性和速度,从用户体验上集中表现为打开页面的速度缓慢。

网络性能评价的实现

网络的优劣会影响网络交互的延迟时间、稳定性和速度,从用户体验上集中表现为打开页面的速度缓慢。比如在较差的网络并发的请求数会被降低,以避免网络性能因为阻塞而进一步恶化。

针对不同网络品质的优化的前提就是要有一种方法来度量网络的品质。

目前度量网络的品质的方法如果仅以网络连接类型来区分,比如2G, 3G, Wifi等,无法有效感知到当时的网络状态。在同一网络连接类型下,网络的品质仍有大幅波动,可能会因为阻塞以及线路上问题导致延迟上抖动(jitter)、丢失数据包、数据包损坏等情况。在现实场景中,比如繁忙时段,或者处在信号不好的区域时(如交通工具上),使用网络类型来判断当时的网络品质会有很大偏差。

本文基于对一段时间的网络数据的记录,进行算法处理,可以测出一个衡量当时网络状态的指标(MI: Measurement Index)。具体应用到移动设备上时,考虑到计算量的问题,可以使用近似算法减小计算的复杂度。

目前的使用的算法是结合历史数据进行统计,即运行指数平滑算法。这样理论上因为同时使用了本次及之前的历史的数据进行计算,可以将单次统计的数据量减少。

网络数据的定义是通过模拟测试环境录制得来。其中包括两个主要内容:
1. 定义网络评测的参数
2. 定义网络状态区间范围

在实际应用时,还需要考虑数据采集的区间和数据量,以及数据的平滑处理。

网络评测的参数

经过对比评估以下六个参数对应于latency和bandwidth的设定,得到数据如下:
1. Speed, 传输速率:由收完数据的时间除去所收取的数据大小。
2. Header Received: 收到响应头的时间 (即TTFB)。
3. Connected: 连接到主机的时间。
4. Sent: 在Java层完成调用完成发送请求的时间。
5. DNS Resolved: DNS解析的时间。
6. Finished: 整个请求完成的时间。
01

对比分析各参数中位数与网络状态(rate)后,发现以下参数与网络状态的关联关系,其中Header Received的关联关系为正相关。

所以定义由Header Received时间定为网络衡量指标

定义网络状态区间范围

关于网络状态范围,由于网络的波动性,不能限定在具体的一个值的区分。这里使用K中值分类法(R Script: compareData.R)。

将数据分为四个簇,依次取出其设定范围。再以目前测试发现最大值分布在12000左右(约为6000延迟), 所以使用13000,即最大延迟数,进行归一化处理。

下图表示的为分为四个簇的情况(每一项数据为一个URL测试5次所得结果):
02
其中cluster 4最佳,cluster 1为最差的区间, 为保守起见,在目前的实现将cluster 1与cluster 2合并来看。

定义数据分析的时间段

依次采集分析2x1URL, 5x1URL,5x2URLs, 5x4URLs及3x1URL数据。对比各种情况下数据聚合的情况。其中2x1URL 表现数据不足,四个簇不能很好的分隔:
03
这时的每一项值的数据量为50条左右。

当3x1URL时,每一项值的数据量为80条上下,四个簇重合部分已经有很好的改善:
04
由上面可知,如果使用独立样本进行计算,50笔数据较难获得有效的样本数据,至少需要80笔数据,才能得出较合适的统计。而移动网络下,特别是2G网络下,80个请求会耗时太久,不利于及时体现当前网络数据。

目前的使用的算法是结合历史数据进行统计,即运行指数平滑算法。这样理论上因为同时使用了本次及之前的历史的数据进行计算,可以将单次统计的数据量减少。

定义数据的样本大小及采集周期

目前选定最小采集样本为15笔请求,包含失败的请求,其中失败的请求视为一次最大延迟记录(取值见上面的讨论)。 最小采集周期为30秒,最大采集周期为4分钟。

考虑到网络的变化特性,一是不能太快跳变,二是及时逼近。另外在移动网络下,数据量可能达不到采集的要求,必须有效地利用历史数据。所以系数的选择需要考虑到两个方面:一是收敛速度,二是兼顾历史数据(利用历史数据进行计算,并避免数据不准导致的误判。)。

这里存在三个变量: 采集的周期(t),采集的样本数(n)及平滑系数(a)。
采集样本数是指最小可以用于统计运算的数据数量。根据模拟测试(R脚本为simulatorPhase.R), 判断数据集的大小的波动性可以在平滑系数的辅助下达到一定的稳定性(平滑系数越小,数据分布越稳定,但收敛速度越慢.)。 比如下图中使用样本数15、平滑系数0.3的组合可以达到样本数20、平滑系数0.4组合的标准差范围。(平滑系数越大标准差越大!)

采集样本为20,平滑系数为0.4(总数据量4000),结果的标准差为579.87(非定值):
05

采集样本为15,平滑系数为0.4(总数据量4000),结果的标准差为589.16(非定值):
06

采集样本为15,平滑系数为0.3(总数据量4000),结果的标准差为576.41(非定值):
07

采集样本为15,平滑系数为0.6(总数据量4000),结果的标准差为872.23(非定值):
08

采集周期是指最小的数据采集时间,在此时间内只负责收集数据,不进行计算。在采集周期内可能并不会收集到足够的数据,就会延长到一个最大采集周期。
采集的周期的大小取决于最小采集样本的大小。目前设定为30秒。

最大采集周期的选定,取值于移动网络下,以无图模式一分钟浏览一个新浪新闻页面,达到采集样本数量的时间,即4分钟。

下图为上述参数在实际测试过程中观察到的Measurement Index分布的情况, 在数据演化将近6次(约3分钟)后维持到6385上下。
09

定义数据的平滑系数

不同的平滑系数会一个处理波动时的浮动范围,表示无法明确判别的区域,归为较好的网络处理。由此定义了实现时使用的模糊区间。

测试对比了多个候选的系数。以0.3及0.65为例说明如下。

平滑系数:0.3

指数0.3是假设网络环境相对稳定,但受网络抖动的影响会有波动。

在计算时选择经过多样本获得的历史数据的比重大于新取得的单样本数据。缺点是会造成逼近速度变缓, 近8次逼近到目标值(相差200以内)。

再模拟两次数据统计的波动。单次统计数据约为2000,若分成两次统计,可能会遇到一次3500,后一次500的大幅波动。应用系数0.3后统计结果保持在平均值2000的上下200的范围, 对应于指数上下浮动0.03。
以下为其示意图:
10

8次逼近所需时间视最小采集周期而定,一般情况下约为4分钟时间。

考虑大幅波动时的标准差,以3000~1500的波动为例,其标准差为:447.56。
11

系数0.3最大的优势在于适应小样本数据的情况。详细之前的讨论。为了弥补主要的缺点,将在一个网络下第一次计算时,先使用系数0.5, 再调整为0.3。效果如下:
12

以下为实际测试结果(latency:2000,bandwidth 80kbps, standard MI:~2500):
13

平滑系数:0.65

当选取0.65作为系数时,当前值所占的比重更高。需要3次运算逼近到设定值(130以内,占比小于1%)。

如上模拟两次数据统计的波动。这时统计结果保持在平均值2000的上下约800(逼近于777)的范围。即设定的界定值前后800对应于性能指数上下浮动0.06。
14

考虑大幅波动时的标准差,以3000~1500的波动为例,其标准差为:381.9。较系数取0.5时并没引入太多的误差,却将收敛所用的次数降低了2次。
15

与实际场景的对应

与现实场景的对应关系如下(收集的现场数据):

Scenario Latency Index
包含地铁繁忙时间的数据(2G) 500~6000 19~100
地铁一般场景(2G) 100~400 5~64
公司座位
200~500 32~52
3G&Wifi 50~80 0~4

下面为其分布示意图(横轴依次代表上表中的五项,请忽略第3项数据):
16

参考

目录
相关文章
|
8月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
606 0
|
7月前
|
机器学习/深度学习 数据采集 边缘计算
基于灰色神经网络的预测方法
基于灰色神经网络的预测方法
455 0
|
8月前
|
算法 Python
【EI复现】考虑网络动态重构的分布式电源选址定容优化方法(Matlab代码实现)
【EI复现】考虑网络动态重构的分布式电源选址定容优化方法(Matlab代码实现)
325 0
|
10月前
|
存储 Linux 容器
【Container App】在容器中抓取网络包的方法
本文介绍在Azure Container App中安装tcpdump抓取网络包,并通过Storage Account上传抓包文件的方法。内容包括使用curl和nc测试外部接口连通性、长Ping端口、安装tcpdump、抓取网络包、以及通过crul命令上传文件至Azure Storage。适用于需要分析网络请求和排查网络问题的场景。
294 0
|
9月前
|
机器学习/深度学习 数据采集 TensorFlow
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
基于CNN-GRU-Attention混合神经网络的负荷预测方法(Python代码实现)
518 0
|
监控 安全 网络安全
深入解析PDCERF:网络安全应急响应的六阶段方法
PDCERF是网络安全应急响应的六阶段方法,涵盖准备、检测、抑制、根除、恢复和跟进。本文详细解析各阶段目标与操作步骤,并附图例,助读者理解与应用,提升组织应对安全事件的能力。
2424 89
|
10月前
|
机器学习/深度学习 边缘计算 算法
基于BP神经网络的电池容量预测方法研究
基于BP神经网络的电池容量预测方法研究
计算网络号的直接方法
子网掩码用于区分IP地址中的网络部分和主机部分,连续的“1”表示网络位,“0”表示主机位。例如,255.255.255.0 的二进制为 11111111.11111111.11111111.00000000,前24位是网络部分。通过子网掩码可提取网络号,如 IP 192.168.1.10 与子网掩码 255.255.255.0 的网络号为 192.168.1.0。此外,文档还介绍了十进制与二进制间的转换方法,帮助理解IP地址的组成与计算。
833 11
|
缓存 数据中心 网络架构
5个减少网络延迟的简单方法
高速互联网对工作与娱乐至关重要,延迟和断线会严重影响效率和体验。本文探讨了导致连接缓慢的三个关键因素:吞吐量、带宽和延迟,并提供了减少延迟的实用方法。包括重启设备、关闭占用带宽的程序、使用有线连接、优化数据中心位置以及添加内容分发网络 (CDN) 等策略。虽然完全消除延迟不可能,但通过这些方法可显著改善网络性能。
4287 7
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
508 12