最近對(duì)云主機(jī)進(jìn)行性能測試,第一次涉及到了網(wǎng)絡(luò)方面的性能測試,其實(shí)不能算是一次很全面的網(wǎng)絡(luò)性能方面的性能測試,只是針對(duì)不同的測試目標(biāo)進(jìn)行了測試,在這期間,了解了網(wǎng)絡(luò)性能測試需要掌握的性能指標(biāo)、測試工具、功能選型和對(duì)比等。下面一一介紹下:
網(wǎng)絡(luò)性能指標(biāo)
常見的網(wǎng)絡(luò)性能測試指標(biāo)包含:網(wǎng)絡(luò)吞吐量(Throughput)、網(wǎng)絡(luò)延遲(latency)、抖動(dòng)(jitter)、丟包率等
網(wǎng)絡(luò)吞吐量:單位時(shí)間內(nèi)通過某個(gè)網(wǎng)絡(luò)(或信道、接口)的數(shù)據(jù)量,吞吐量受網(wǎng)絡(luò)的帶寬或者網(wǎng)絡(luò)的額定速率限制的,例如家庭帶寬為10M網(wǎng)絡(luò),表明網(wǎng)絡(luò)吞吐量不可能超過10Mbits/s,吞吐量的單位通常表示為位元每秒(bit/s或bps)。
網(wǎng)絡(luò)延遲:通俗的講,就是數(shù)據(jù)從電腦這邊傳到那邊所用的時(shí)間。這兒有個(gè)問題需要確認(rèn),數(shù)據(jù)是指一個(gè)數(shù)據(jù)包的傳輸還是任意大小,和你傳輸?shù)臄?shù)據(jù)量相關(guān)。可以明顯的看到,從A到B傳送1個(gè)字節(jié)的時(shí)間和傳送100MB的時(shí)間肯定是不一樣的。標(biāo)準(zhǔn)意義上的延遲,應(yīng)該僅僅指1個(gè)字節(jié)的傳輸時(shí)間,類似網(wǎng)絡(luò)課上講到的傳播時(shí)延。(不同意見歡迎討論)。同樣存在一個(gè)名詞叫做傳播延時(shí),這個(gè)應(yīng)該可以標(biāo)識(shí)整個(gè)數(shù)據(jù)包的傳輸時(shí)間,不論包大小為多少。
抖動(dòng):用于描述包在網(wǎng)絡(luò)中的傳輸延時(shí)的變化,抖動(dòng)越小,說明網(wǎng)絡(luò)質(zhì)量越穩(wěn)定越好。抖動(dòng)是評(píng)價(jià)一個(gè)網(wǎng)絡(luò)性能的最重要的因素。
丟包率:測試中所丟失的數(shù)據(jù)包數(shù)量占所發(fā)送的數(shù)據(jù)包的比率,因?yàn)槲覀冎繲CP協(xié)議是可靠的,所以,一般在使用UDP傳輸時(shí),才會(huì)統(tǒng)計(jì)丟包率。
網(wǎng)絡(luò)性能測試工具
大家熟知的,常用的開源網(wǎng)絡(luò)性能測試工具有兩個(gè):iperf 和 netperf,這兩種工具都是可以測試TCP協(xié)議和UDP協(xié)議的,從可測試的網(wǎng)絡(luò)性能指標(biāo),我們對(duì)兩種工具進(jìn)行下對(duì)比:
可測試的網(wǎng)絡(luò)性能指標(biāo):
工具 | 吞吐量 | 網(wǎng)絡(luò)延時(shí) | 抖動(dòng) | 丟包 | 其他 |
iperf | 是 | 是 | 否 | 是 | |
netperf | 是 | 是 | 是 | 是 | 重傳、CPU利用率、延時(shí)分布等
|
可見,iperf也可以完成基本的網(wǎng)絡(luò)性能測試,但是工具比netperf要略差些,我們測試過程中,選用的工具為netperf,下面對(duì)netperf進(jìn)行下詳細(xì)介紹:
安裝:netperf的安裝可以找SA部署,但是SA安裝的版本時(shí)2.4版本,很多功能沒有實(shí)現(xiàn),可以自己make安裝netperf 2.6版本,是目前為止最新的版本。
基本命令:netperf -H hostname -l testtime: 例如 netperf -H 172.0.0.2 -l 60,表示發(fā)送到172.0.0.2(這臺(tái)機(jī)器上需要啟動(dòng)netserver進(jìn)程),發(fā)送時(shí)間為60s,默認(rèn)的發(fā)送方式為TCP Stream方式。
發(fā)送方式:netperf 可以支持多種不同的發(fā)送方式,通過 -t 參數(shù)指定:
TCP_STREAM、UDP_STREAM模式:即不停往發(fā)送方發(fā)送數(shù)據(jù),可以通過-m 參數(shù)指定發(fā)送數(shù)據(jù)的大小,默認(rèn)大小為socket size。
TCP_RR模式:即Request、Response模式,類似模擬http請(qǐng)求、數(shù)據(jù)庫請(qǐng)求等,默認(rèn)大小Request size 和 Response size 均為1byte,可以通過 -r 64,32K 設(shè)置 Request、Response size。
統(tǒng)計(jì)數(shù)據(jù):默認(rèn)得到的數(shù)據(jù)只有傳輸時(shí)間和吞吐量等,可以通過-k 參數(shù)設(shè)置要顯示的結(jié)果數(shù)據(jù):
MIN_LATENCY,MAX_LATENCY,MEAN_LATENCY,P50_LATENCY,P90_LATENCY:可以得到延遲相關(guān)的統(tǒng)計(jì)數(shù)據(jù),延遲最大最小值、平均延遲,延遲50、70、90、99值等。
STDDEV_LATENCY:延遲標(biāo)準(zhǔn)差,可以通過該值反應(yīng)網(wǎng)絡(luò)的抖動(dòng)情況
THROUGHPUT:兩臺(tái)機(jī)器之間當(dāng)前的吞吐量
LOCAL_CPU_UTIL,REMOTE_CPU_UTIL:發(fā)送方和接收方的CPU使用率
REQUEST_SIZE,RESPONSE_SIZE:RR模式時(shí),Request、Response size
LOCAL_TRANSPORT_RETRANS:重傳次數(shù)
通過上面對(duì)netperf命令的描述,可以看到該工具基本可以測試得到所有網(wǎng)絡(luò)性能方面的指標(biāo),但是netperf、iperf這種工具可能更適合作為一種基準(zhǔn)工具,進(jìn)行壓力測試,作為負(fù)載測試工具還不是很合適,測試過程中,可以通過-b -w的參數(shù)制定發(fā)送數(shù)據(jù)包個(gè)數(shù)和發(fā)送間隔,但是不能從根本上限制網(wǎng)絡(luò)吞吐量僅占網(wǎng)絡(luò)帶寬的50%等情況。