小白都能看懂的网络性能测试
【欢迎关注微信公众号:厦门微思网络】
本文简单介绍一下网络性能的相关测试,包括吞吐量,抖动,丢包率,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 【欢迎关注微信公众号:厦门微思网络】
小白都能看懂的网络性能测试相关推荐
- 小白也能看懂的网络基础 | 01 什么是网络?
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 引言 欢迎来到网络世界,<小白也能看懂的网络基础>系列文章会从零开始帮助你构建网络的基础知识.如果你完 ...
- 小白也能看懂的网络基础 | 02 什么是连接设备?
公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 引言 欢迎来到网络世界,<小白也能看懂的网络基础>系列文章会从零开始帮助你构建网络的基础知识.如果你完 ...
- 小白也能看懂的网络基础 | 44 张图搞定什么是连接设备?
公众号关注"程序IT圈", 选择"星标",重磅干货,第一时间送达! 引言 欢迎来到网络世界,<小白也能看懂的网络基础>系列文章会从零开始帮助你构建网 ...
- 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...
一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...
- 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)
小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的 ...
- c语言程序和plc程序的区别,一文告诉你PLC与计算机的本质区别在哪里!小白都能看懂!...
原标题:一文告诉你PLC与计算机的本质区别在哪里!小白都能看懂! 你真的了解PLC吗?你知道PLC与计算机的本质区别吗?我来简单解释一下吧. 1.PLC可以工作在极其恶劣的电磁环境中 如果我们把计算机 ...
- 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 1)
小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第一讲 博主博客文章内容导航(实时更新) 更多优质文章推荐: 收藏!最详细的P ...
- 红色买绿色出 简单易操作的买卖点公式 散户小白都能看懂
好久没来csdn了,在最初,CSDN是用来记录我做前端写的笔记,后面在工作期间,接触了产品,就转岗了,慢慢的,csdn就很少写了,但是我觉得这里可以作为我记录心得的一个地方,还是挺好的. 因为产品规划 ...
- 兄弟,用大白话告诉你小白都能看懂的Hadoop架构原理
本文来自:石杉的架构笔记 目录 一.前奏 二.HDFS的NameNode架构原理 一.前奏 Hadoop是目前大数据领域最主流的一套技术体系,包含了多种技术. 包括HDFS(分布式文件系统),YARN ...
最新文章
- 解决Fiddler不能监听Java HttpURLConnection请求的方法
- php图片自动裁剪工具,php图片自动裁剪工具,解决图片变形问题,缩略图问题
- 130.CDMA全称是什么?
- windows server 2008 如何查看异常重启日志
- php网站导航-国际网址导航系统 v5.0源码
- 05 - @property 后面所加的关键词
- php echo nbsp,关于include里面的函数echo的问题
- UNet以ResNet34为backbone in keras
- python策略模式包含角色_Python 之策略模式
- 黑马程序员————java中面向对象的三大特性
- 05《基于深度卷积神经网络的车型识别研究》学习总结
- 怎样将exe打包成服务运行
- OpenCV4机器学习(一):OpenCV4+VS2017环境搭建与配置
- 【Http认证方式】——Basic认证
- android 蓝牙耳机 sco,Android:通过Sco蓝牙耳机播放声音
- 5分钟就能做一个Excel动态图表,你确定不学学?(纯gif教学)
- UEFI下Windows引导过程
- 网卡的TSO卸载功能
- Mac小技巧|怎么移动Mac状态栏的图标
- 笔记本光驱拆解——让整个世界变得安静
热门文章
- web安全101之如何理解XXE?
- 内核对象用于线程同步
- 1.17 项目实例:模仿斗地主洗牌发牌小游戏
- 1049 Counting Ones (30 分)【难度: 难 / 知识点: 分治 / DP】
- 【PAT乙级】1090 危险品装箱 (25 分)
- 【图片和pdf】相关网站
- Java的13个规范
- 我在实际工作中用的最多的 git 命令
- 怎么简述计算机网络的含义,计算机网络复习资料-含简答题参考答案
- java xpath 命名空间_【转】玩转 XPath 和缺省命名空间(Default Namespaces)