初探网络性能测试
最近对云主机进行性能测试,第一次涉及到了网络方面的性能测试,其实不能算是一次很全面的网络性能方面的性能测试,只是针对不同的测试目标进行了测试,在这期间,了解了网络性能测试需要掌握的性能指标、测试工具、功能选型和对比等。下面一一介绍下:
网络性能指标
常见的网络性能测试指标包含:网络吞吐量(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%等情况。
posted on 2013-09-26 17:00
zouhui 阅读(415)
评论(0) 编辑 收藏 所属分类:
2.软件测试 性能自动化