初探网络性能测试

初探网络性能测试

初探网络性能测试

  最近对云主机进行性能测试,第一次涉及到了网络方面的性能测试,其实不能算是一次很全面的网络性能方面的性能测试,只是针对不同的测试目标进行了测试,在这期间,了解了网络性能测试需要掌握的性能指标、测试工具、功能选型和对比等。下面一一介绍下:

  网络性能指标

  常见的网络性能测试指标包含:网络吞吐量(Throughput)、网络延迟(latency)、抖动(jitter)、丢包率等

  网络吞吐量:单位时间内通过某个网络(或信道、接口)的数据量,吞吐量受网络的带宽或者网络的额定速率限制的,例如家庭带宽为10M网络,表明网络吞吐量不可能超过10Mbits/s,吞吐量的单位通常表示为位元每秒(bit/s或bps)。

  网络延迟:通俗的讲,就是数据从电脑这边传到那边所用的时间。这儿有个问题需要确认,数据是指一个数据包的传输还是任意大小,和你传输的数据量相关。可以明显的看到,从A到B传送1个字节的时间和传送100MB的时间肯定是不一样的。标准意义上的延迟,应该仅仅指1个字节的传输时间,类似网络课上讲到的传播时延。(不同意见欢迎讨论)。同样存在一个名词叫做传播延时,这个应该可以标识整个数据包的传输时间,不论包大小为多少。

  抖动:用于描述包在网络中的传输延时的变化,抖动越小,说明网络质量越稳定越好。抖动是评价一个网络性能的最重要的因素。

  丢包率:测试中所丢失的数据包数量占所发送的数据包的比率,因为我们知道TCP协议是可靠的,所以,一般在使用UDP传输时,才会统计丢包率。

  网络性能测试工具

  大家熟知的,常用的开源网络性能测试工具有两个:iperf 和 netperf,这两种工具都是可以测试TCP协议和UDP协议的,从可测试的网络性能指标,我们对两种工具进行下对比:

  可测试的网络性能指标:

 工具

吞吐量 

 网络延时

 抖动

丢包 

 其他

 iperf

 是

 否

 是

 

 netperf

 是

 是

 是

 重传、CPU利用率、延时分布等



可见,iperf也可以完成基本的网络性能测试,但是工具比netperf要略差些,我们测试过程中,选用的工具为netperf,下面对netperf进行下详细介绍:

  安装:netperf的安装可以找SA部署,但是SA安装的版本时2.4版本,很多功能没有实现,可以自己make安装netperf 2.6版本,是目前为止最新的版本。

  基本命令:netperf -H hostname -l testtime: 例如 netperf -H 172.0.0.2 -l 60,表示发送到172.0.0.2(这台机器上需要启动netserver进程),发送时间为60s,默认的发送方式为TCP Stream方式。

  发送方式:netperf 可以支持多种不同的发送方式,通过 -t 参数指定:

  TCP_STREAM、UDP_STREAM模式:即不停往发送方发送数据,可以通过-m 参数指定发送数据的大小,默认大小为socket size。

  TCP_RR模式:即Request、Response模式,类似模拟http请求、数据库请求等,默认大小Request size 和 Response size 均为1byte,可以通过 -r 64,32K 设置 Request、Response size。

  统计数据:默认得到的数据只有传输时间和吞吐量等,可以通过-k 参数设置要显示的结果数据:

  MIN_LATENCY,MAX_LATENCY,MEAN_LATENCY,P50_LATENCY,P90_LATENCY:可以得到延迟相关的统计数据,延迟最大最小值、平均延迟,延迟50、70、90、99值等。

  STDDEV_LATENCY:延迟标准差,可以通过该值反应网络的抖动情况

  THROUGHPUT:两台机器之间当前的吞吐量

  LOCAL_CPU_UTIL,REMOTE_CPU_UTIL:发送方和接收方的CPU使用率

  REQUEST_SIZE,RESPONSE_SIZE:RR模式时,Request、Response size

  LOCAL_TRANSPORT_RETRANS:重传次数

  通过上面对netperf命令的描述,可以看到该工具基本可以测试得到所有网络性能方面的指标,但是netperf、iperf这种工具可能更适合作为一种基准工具,进行压力测试,作为负载测试工具还不是很合适,测试过程中,可以通过-b -w的参数制定发送数据包个数和发送间隔,但是不能从根本上限制网络吞吐量仅占网络带宽的50%等情况。

你可能感兴趣的:(初探网络性能测试)