初探網絡性能測試
最近對云主機進行性能測試,第一次涉及到了網絡方面的性能測試,其實不能算是一次很全面的網絡性能方面的性能測試,只是針對不同的測試目標進行了測試,在這期間,了解了網絡性能測試需要掌握的性能指標、測試工具、功能選型和對比等。下面一一介紹下:
網絡性能指標
常見的網絡性能測試指標包含:網絡吞吐量(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 閱讀(420)
評論(0) 編輯 收藏 所屬分類:
2.軟件測試 性能自動化