小白都能看懂的网络性能测试
【歡迎關注微信公眾號:廈門微思網絡】
本文簡單介紹一下網絡性能的相關測試,包括吞吐量,抖動,丟包率,pps,qps,本文主要使用iperf3、netperf、wrk作為測試工具
工具安裝
1.1?iperf3
yum?install?iperf3
1.2?netperf
yum?install?netperf
1.3?wrk
yum?install?-y?https://github.com/scutse/wrk-rpm/releases/download/4.1.0/wrk-4.1.0-1.el7.centos.x86_64.rpm
1.4?sar
yum?install?sysstat
吞吐量測試
2.1?工具
iperf3
2.2?測試舉例
需要兩臺機器,一臺機器充當server,另一臺充當client
server端
啟動服務,下面的輸出結果,是在client發送數據的時候,輸出的
[root@tstack-con01?~]#?iperf3?-s
-----------------------------------------------------------
Server?listening?on?5201
-----------------------------------------------------------
Accepted?connection?from?192.168.30.134,?port?50984
[??5]?local?192.168.30.133?port?5201?connected?to?192.168.30.134?port?50986
[?ID]?Interval???????????Transfer?????Bandwidth
[??5]???0.00-1.00???sec??1.14?GBytes??9.80?Gbits/sec
[??5]???1.00-2.00???sec??1.71?GBytes??14.6?Gbits/sec
[??5]???2.00-3.00???sec??1.73?GBytes??14.8?Gbits/sec
[??5]???3.00-4.00???sec??1.87?GBytes??16.1?Gbits/sec
[??5]???4.00-5.00???sec??1.90?GBytes??16.3?Gbits/sec
[??5]???5.00-6.00???sec??2.09?GBytes??17.9?Gbits/sec
[??5]???6.00-7.00???sec??1.66?GBytes??14.2?Gbits/sec
[??5]???7.00-8.00???sec??1.67?GBytes??14.3?Gbits/sec
[??5]???8.00-9.00???sec??1.76?GBytes??15.1?Gbits/sec
[??5]???9.00-10.00??sec??1.75?GBytes??15.1?Gbits/sec
[??5]??10.00-10.04??sec??67.4?MBytes??15.1?Gbits/sec
-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-
[?ID]?Interval???????????Transfer?????Bandwidth
[??5]???0.00-10.04??sec??0.00?Bytes??0.00?bits/sec??????????????????sender
[??5]???0.00-10.04??sec??17.3?GBytes??14.8?Gbits/sec??????????????????receiver
-----------------------------------------------------------
Server?listening?on?5201
-----------------------------------------------------------
client端
192.168.30.133為server端的ip地址
[root@tstack-com01?~]#?iperf3?-c?192.168.30.133
Connecting?to?host?192.168.30.133,?port?5201
[??4]?local?192.168.30.134?port?50986?connected?to?192.168.30.133?port?5201
[?ID]?Interval???????????Transfer?????Bandwidth???????Retr??Cwnd
[??4]???0.00-1.00???sec??1.21?GBytes??10.4?Gbits/sec????0???1017?KBytes
[??4]???1.00-2.00???sec??1.71?GBytes??14.7?Gbits/sec???29???1.11?MBytes
[??4]???2.00-3.00???sec??1.73?GBytes??14.8?Gbits/sec????0???1.41?MBytes
[??4]???3.00-4.00???sec??1.87?GBytes??16.1?Gbits/sec????3???1.16?MBytes
[??4]???4.00-5.00???sec??1.90?GBytes??16.3?Gbits/sec??119???1.03?MBytes
[??4]???5.00-6.00???sec??2.09?GBytes??17.9?Gbits/sec????0???1.29?MBytes
[??4]???6.00-7.00???sec??1.64?GBytes??14.1?Gbits/sec???19???1.14?MBytes
[??4]???7.00-8.00???sec??1.68?GBytes??14.4?Gbits/sec????0???1.14?MBytes
[??4]???8.00-9.00???sec??1.76?GBytes??15.1?Gbits/sec????0???1.20?MBytes
[??4]???9.00-10.00??sec??1.75?GBytes??15.1?Gbits/sec????0???1.21?MBytes
-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-
[?ID]?Interval???????????Transfer?????Bandwidth???????Retr
[??4]???0.00-10.00??sec??17.3?GBytes??14.9?Gbits/sec??170?????????????sender
[??4]???0.00-10.00??sec??17.3?GBytes??14.9?Gbits/sec??????????????????receiver
從測試結果可以看出,吞吐量為15Gb/s
抖動和丟包率測試
3.1?工具
iperf3
3.2?測試舉例
server端
[root@tstack-con01?~]#?iperf3?-s
-----------------------------------------------------------
Server?listening?on?5201
-----------------------------------------------------------
Accepted?connection?from?192.168.30.134,?port?51048
[??5]?local?192.168.30.133?port?5201?connected?to?192.168.30.134?port?42962
[?ID]?Interval???????????Transfer?????Bandwidth???????Jitter????Lost/Total?Datagrams
[??5]???0.00-1.00???sec???116?KBytes???950?Kbits/sec??3.666?ms??0/82?(0%)
[??5]???1.00-2.00???sec???129?KBytes??1.05?Mbits/sec??0.022?ms??0/91?(0%)
[??5]???2.00-3.00???sec???127?KBytes??1.04?Mbits/sec??0.009?ms??0/90?(0%)
[??5]???3.00-4.00???sec???129?KBytes??1.05?Mbits/sec??0.008?ms??0/91?(0%)
[??5]???4.00-5.00???sec???127?KBytes??1.04?Mbits/sec??0.004?ms??0/90?(0%)
[??5]???5.00-6.00???sec???129?KBytes??1.05?Mbits/sec??0.010?ms??0/91?(0%)
[??5]???6.00-7.00???sec???127?KBytes??1.04?Mbits/sec??0.011?ms??0/90?(0%)
[??5]???7.00-8.00???sec???129?KBytes??1.05?Mbits/sec??0.002?ms??0/91?(0%)
[??5]???8.00-9.00???sec???127?KBytes??1.04?Mbits/sec??0.008?ms??0/90?(0%)
[??5]???9.00-10.00??sec???129?KBytes??1.05?Mbits/sec??0.006?ms??0/91?(0%)
[??5]??10.00-10.04??sec??0.00?Bytes??0.00?bits/sec??0.006?ms??0/0?(0%)
-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-
[?ID]?Interval???????????Transfer?????Bandwidth???????Jitter????Lost/Total?Datagrams
[??5]???0.00-10.04??sec??0.00?Bytes??0.00?bits/sec??0.006?ms??0/897?(0%)
-----------------------------------------------------------
Server?listening?on?5201
-----------------------------------------------------------
client端
添加-u來發送udp數據包,實現抖動和丟包率的測試
[root@tstack-com01?~]#?iperf3?-c?192.168.30.133?-u
Connecting?to?host?192.168.30.133,?port?5201
[??4]?local?192.168.30.134?port?42962?connected?to?192.168.30.133?port?5201
[?ID]?Interval???????????Transfer?????Bandwidth???????Total?Datagrams
[??4]???0.00-1.00???sec???116?KBytes???950?Kbits/sec??82
[??4]???1.00-2.00???sec???129?KBytes??1.05?Mbits/sec??91
[??4]???2.00-3.00???sec???127?KBytes??1.04?Mbits/sec??90
[??4]???3.00-4.00???sec???129?KBytes??1.05?Mbits/sec??91
[??4]???4.00-5.00???sec???127?KBytes??1.04?Mbits/sec??90
[??4]???5.00-6.00???sec???129?KBytes??1.05?Mbits/sec??91
[??4]???6.00-7.00???sec???127?KBytes??1.04?Mbits/sec??90
[??4]???7.00-8.00???sec???129?KBytes??1.05?Mbits/sec??91
[??4]???8.00-9.00???sec???127?KBytes??1.04?Mbits/sec??90
[??4]???9.00-10.00??sec???129?KBytes??1.05?Mbits/sec??91
-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-?-
[?ID]?Interval???????????Transfer?????Bandwidth???????Jitter????Lost/Total?Datagrams
[??4]???0.00-10.00??sec??1.24?MBytes??1.04?Mbits/sec??0.006?ms??0/897?(0%)
[??4]?Sent?897?datagrams
iperf?Done.
從結果可以看出,抖動為0.006ms, 丟包率為0%
pps測試
pps全稱packets?per?seconds,也就是每秒鐘發送的數據源包數量。
4.1?工具
netperf
sar
4.2?測試舉例
本文使用兩臺主機實現pps測試。如果條件支持,建議多client進行發包測試。
4.2.1?測試TCP_STREAM
在數據接收端運行server服務
[root@tstack-con01?tools]#?netserver?-p?12345
Starting?netserver?with?host?'IN(6)ADDR_ANY'?port?'12345'?and?family?AF_UNSPEC
在client端運行如下命令向server進行數據包的發送
-H -p 指server端的ip地址和端口號
-l 30 指發送30s
-m 1 指發送數據包的大小,測試bps(bit per seconds)的時候,指定為1500
默認-t 為TCP_STREAM
[root@tstack-com01?~]#?netperf?-H?192.168.30.133?-p?12345?-l?30?--?-m?1
MIGRATED?TCP?STREAM?TEST?from?0.0.0.0?(0.0.0.0)?port?0?AF_INET?to?192.168.30.133?()?port?0?AF_INET
Recv???Send????Send
Socket?Socket??Message??Elapsed
Size???Size????Size?????Time?????Throughput
bytes??bytes???bytes????secs.????10^6bits/sec
?87380??16384?????46????30.00?????960.44
在server端通過sar對接收到的數據包進行統計
1 代表每隔1秒統計一次數據
20 代表統計20次取平均值
[root@tstack-con01?tools]#?sar?-n?DEV?1?20|grep?enp65s0f0
06:06:01?PM?enp65s0f0??83469.00???7669.00?120201.31????494.81??????0.00??????0.00??????3.00
06:06:02?PM?enp65s0f0??84407.00???7120.00?121833.36????459.07??????0.00??????0.00??????2.00
06:06:03?PM?enp65s0f0??83608.00???6786.00?120906.84????450.03??????0.00??????0.00??????3.00
06:06:04?PM?enp65s0f0??84361.00???6718.00?122126.39????455.01??????0.00??????0.00??????2.00
06:06:05?PM?enp65s0f0??85174.00???6682.00?123558.96????450.80??????0.00??????0.00??????3.00
06:06:06?PM?enp65s0f0??83616.00???6661.00?121306.26????429.47??????0.00??????0.00??????2.00
06:06:07?PM?enp65s0f0??84546.00???6301.00?122792.27????406.26??????0.00??????0.00??????3.00
06:06:08?PM?enp65s0f0??85204.00???5990.00?123920.02????386.70??????0.00??????0.00??????2.00
06:06:09?PM?enp65s0f0??85298.00???5852.00?124089.33????377.84??????0.00??????0.00??????3.00
06:06:10?PM?enp65s0f0??85127.00???5858.00?123940.40????377.71??????0.00??????0.00??????2.00
06:06:11?PM?enp65s0f0??85266.00???5805.00?124079.54????374.78??????0.00??????0.00??????3.00
06:06:12?PM?enp65s0f0??84512.00???5738.00?123028.91????369.98??????0.00??????0.00??????2.00
06:06:13?PM?enp65s0f0??85252.00???6449.00?123783.21????416.31??????0.00??????0.00??????3.00
06:06:14?PM?enp65s0f0??84939.00???6099.00?123585.46????393.24??????0.00??????0.00??????2.00
06:06:15?PM?enp65s0f0??85487.00???5805.00?124518.71????374.67??????0.00??????0.00??????3.00
06:06:16?PM?enp65s0f0??85531.00???5758.00?124643.46????371.27??????0.00??????0.00??????2.00
06:06:17?PM?enp65s0f0??84083.00???6226.00?122316.70????401.93??????0.00??????0.00??????3.00
06:06:18?PM?enp65s0f0??84491.00???6072.00?123027.48????391.99??????0.00??????0.00??????2.00
06:06:19?PM?enp65s0f0??84907.00???5882.00?123676.07????379.26??????0.00??????0.00??????3.00
06:06:20?PM?enp65s0f0??85648.00???5772.00?124816.33????372.18??????0.00??????0.00??????2.00
Average:????enp65s0f0??84746.30???6262.15?123107.55????406.67??????0.00??????0.00??????2.50
從左到右每個數字的意義如下
Average: IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s
單位說明:
rxpck/s??每秒接受pps
txpck/s??每秒發送pps
rxkB/s???接受帶寬
txkB/s???發送帶寬
從結果可以看出,server端收8.4萬,發是6k
4.2.2 測試UDP_STREAM發
本測試為UDP_STREAM數據包發送性能
在陪練機運行server服務
[root@tstack-con01?tools]#?netserver?-p?12345
Starting?netserver?with?host?'IN(6)ADDR_ANY'?port?'12345'?and?family?AF_UNSPEC
在測試機運行client服務進行UDP_STREAM發的測試
[root@tstack-com01?~]#?netperf?-H?192.168.30.133?-p?12345?-l?20?-t?UDP_STREAM?--?-m?1
MIGRATED?UDP?STREAM?TEST?from?0.0.0.0?(0.0.0.0)?port?0?AF_INET?to?192.168.30.133?()?port?0?AF_INET
Socket??Message??Elapsed??????Messages
Size????Size?????Time?????????Okay?Errors???Throughput
bytes???bytes????secs????????????#??????#???10^6bits/sec
212992???????1???20.00?????9295295??????0???????3.72
212992???????????20.00?????7720000??????????????3.09
參數說明
Messages Okay:傳輸成功的數據包數量
從結果可以看出,UDP_STREAM發的測試結果是9295295/20=46萬
4.2.3 測試UDP_STREAM收
測試流程是在陪練機啟動client服務,記性數據包的發送,在測試機啟動server,用來接收數據包,通過sar來對數據包的接收數量做統計。
陪練機啟動client服務
[root@tstack-com01?~]#?netperf?-H?192.168.30.133?-p?12345?-l?30?-t?UDP_STREAM?--?-m?1
MIGRATED?UDP?STREAM?TEST?from?0.0.0.0?(0.0.0.0)?port?0?AF_INET?to?192.168.30.133?()?port?0?AF_INET
Socket??Message??Elapsed??????Messages
Size????Size?????Time?????????Okay?Errors???Throughput
bytes???bytes????secs????????????#??????#???10^6bits/sec
212992???????1???30.00?????14362435??????0???????3.83
212992???????????30.00?????11855222??????????????3.16
測試機啟動server服務
[root@tstack-con01?tools]#?netserver?-p?12345
Starting?netserver?with?host?'IN(6)ADDR_ANY'?port?'12345'?and?family?AF_UNSPEC
在測試機利用sar來進行數據包的統計工作
[root@tstack-con01?~]#?sar?-n?DEV?1?20|grep?enp65s0f0
10:23:06?PM?enp65s0f0?394128.00?????15.00??23099.12??????4.99??????0.00??????0.00??????2.00
10:23:07?PM?enp65s0f0?391051.00??????4.00??22913.18??????0.42??????0.00??????0.00??????3.00
10:23:08?PM?enp65s0f0?392257.00??????2.00??22983.83??????0.28??????0.00??????0.00??????2.00
10:23:09?PM?enp65s0f0?395070.00??????7.00??23151.33??????1.56??????0.00??????0.00??????3.00
10:23:10?PM?enp65s0f0?395360.00??????1.00??23165.63??????0.21??????0.00??????0.00??????2.00
10:23:11?PM?enp65s0f0?392057.43??????0.99??22972.12??????0.21??????0.00??????0.00??????2.97
10:23:12?PM?enp65s0f0?396273.00?????47.00??23227.00?????23.01??????0.00??????0.00??????2.00
10:23:13?PM?enp65s0f0?389787.00?????82.00??22872.09?????27.52??????0.00??????0.00??????3.00
10:23:14?PM?enp65s0f0?396265.00??????3.00??23219.43??????0.81??????0.00??????0.00??????2.00
10:23:15?PM?enp65s0f0?395449.00??????1.00??23170.85??????0.21??????0.00??????0.00??????3.00
10:23:16?PM?enp65s0f0?396839.00??????1.00??23252.29??????0.21??????0.00??????0.00??????2.00
10:23:17?PM?enp65s0f0?393822.00??????3.00??23077.67??????0.84??????0.00??????0.00??????3.00
10:23:18?PM?enp65s0f0?396418.00??????3.00??23227.65??????0.35??????0.00??????0.00??????2.00
10:23:19?PM?enp65s0f0?396228.00??????7.00??23219.18??????1.56??????0.00??????0.00??????3.00
10:23:20?PM?enp65s0f0?396245.00??????3.00??23217.51??????0.35??????0.00??????0.00??????2.00
10:23:21?PM?enp65s0f0?395187.00??????3.00??23156.88??????0.36??????0.00??????0.00??????3.00
10:23:22?PM?enp65s0f0?394884.00??????2.00??23137.75??????0.27??????0.00??????0.00??????2.00
10:23:23?PM?enp65s0f0?390526.00?????30.00??22895.53?????14.09??????0.00??????0.00??????3.00
10:23:24?PM?enp65s0f0?391885.00??????5.00??22962.81??????0.95??????0.00??????0.00??????3.00
10:23:25?PM?enp65s0f0?396712.00??????1.00??23244.85??????0.21??????0.00??????0.00??????3.00
Average:????enp65s0f0?394321.04?????11.04??23108.27??????3.92??????0.00??????0.00??????2.55
從上面數據可以開出,UDP_STREAM收的pps是39萬
qps測試
qps全稱是queries per seconds,即每秒查詢數,也就是每秒服務的處理請求數
5.1?工具
wrk
httpd
5.2?測試舉例
測試過程是,服務端啟動httpd服務,客戶端通過wrk來進行壓測,測試服務端的qps
服務器端啟動httpd服務
[root@tstack-com01?html]#?yum?install?-y?httpd
Loaded?plugins:?fastestmirror,?langpacks
Loading?mirror?speeds?from?cached?hostfile
Package?httpd-2.4.6-88.el7.centos.x86_64?already?installed?and?latest?version
Nothing?to?do
[root@tstack-com01?html]#?cat?/var/www/html/index.html
test?qps
[root@tstack-com01?html]#?curl?http://192.168.30.134/index.html
test?qps
[root@tstack-com01?html]#
client端安裝wrk,并通過wrk進行壓測
參數分析
-t4 開啟4個線程
-c10000 并發量為10000
-d10s 測試持續10s
[root@tstack-con01?common]#?wrk?-t4?-c10000?-d10s?http://192.168.30.134/index.html
Running?10s?test?@?http://192.168.30.134/index.html
??4?threads?and?10000?connections
??Thread?Stats???Avg??????Stdev?????Max???+/-?Stdev
????Latency?????2.91ms???15.42ms?953.75ms???95.58%
????Req/Sec????31.68k????16.56k???66.90k????69.64%
??176317?requests?in?10.10s,?41.73MB?read
??Socket?errors:?connect?8983,?read?0,?write?0,?timeout?0
Requests/sec:??17456.94
Transfer/sec:??????4.13MB
[root@tstack-con01?common]#
從上面可以看出,在4線程,10000并發的情況下,qps是1.7萬。
?
end?【歡迎關注微信公眾號:廈門微思網絡】
總結
以上是生活随笔為你收集整理的小白都能看懂的网络性能测试的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【干货】值得收藏的 14 个 Linux
- 下一篇: Sudo 授权需谨慎,否则脸上泪两行