【欢迎关注微信公众号:厦门微思网络】

本文简单介绍一下网络性能的相关测试,包括吞吐量,抖动,丢包率,pps,qps,本文主要使用iperf3、netperf、wrk作为测试工具

  1. 工具安装

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

  1. 吞吐量测试

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

  1. 抖动和丢包率测试

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%

  1. 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万

  1. 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 【欢迎关注微信公众号:厦门微思网络】

小白都能看懂的网络性能测试相关推荐

  1. 小白也能看懂的网络基础 | 01 什么是网络?

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 引言 欢迎来到网络世界,<小白也能看懂的网络基础>系列文章会从零开始帮助你构建网络的基础知识.如果你完 ...

  2. 小白也能看懂的网络基础 | 02 什么是连接设备?

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 引言 欢迎来到网络世界,<小白也能看懂的网络基础>系列文章会从零开始帮助你构建网络的基础知识.如果你完 ...

  3. 小白也能看懂的网络基础 | 44 张图搞定什么是连接设备?

    公众号关注"程序IT圈", 选择"星标",重磅干货,第一时间送达! 引言 欢迎来到网络世界,<小白也能看懂的网络基础>系列文章会从零开始帮助你构建网 ...

  4. 随机森林的特征 是放回抽样么_机器学习超详细实践攻略(10):随机森林算法详解及小白都能看懂的调参指南...

    一.什么是随机森林 前面我们已经介绍了决策树的基本原理和使用.但是决策树有一个很大的缺陷:因为决策树会非常细致地划分样本,如果决策树分得太多细致,会导致其在训练集上出现过拟合,而如果决策树粗略地划分样 ...

  5. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 3)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第三讲 这是小白都能看懂的实战教程 手把手教你Python Web全栈开发 的 ...

  6. c语言程序和plc程序的区别,一文告诉你PLC与计算机的本质区别在哪里!小白都能看懂!...

    原标题:一文告诉你PLC与计算机的本质区别在哪里!小白都能看懂! 你真的了解PLC吗?你知道PLC与计算机的本质区别吗?我来简单解释一下吧. 1.PLC可以工作在极其恶劣的电磁环境中 如果我们把计算机 ...

  7. 小白都能看懂的实战教程 手把手教你Python Web全栈开发(DAY 1)

    小白都能看懂的实战教程 手把手教你Python Web全栈开发 Flask(Python Web)实战系列之在线论坛系统 第一讲 博主博客文章内容导航(实时更新) 更多优质文章推荐: 收藏!最详细的P ...

  8. 红色买绿色出 简单易操作的买卖点公式 散户小白都能看懂

    好久没来csdn了,在最初,CSDN是用来记录我做前端写的笔记,后面在工作期间,接触了产品,就转岗了,慢慢的,csdn就很少写了,但是我觉得这里可以作为我记录心得的一个地方,还是挺好的. 因为产品规划 ...

  9. 兄弟,用大白话告诉你小白都能看懂的Hadoop架构原理

    本文来自:石杉的架构笔记 目录 一.前奏 二.HDFS的NameNode架构原理 一.前奏 Hadoop是目前大数据领域最主流的一套技术体系,包含了多种技术. 包括HDFS(分布式文件系统),YARN ...

最新文章

  1. 解决Fiddler不能监听Java HttpURLConnection请求的方法
  2. php图片自动裁剪工具,php图片自动裁剪工具,解决图片变形问题,缩略图问题
  3. 130.CDMA全称是什么?
  4. windows server 2008 如何查看异常重启日志
  5. php网站导航-国际网址导航系统 v5.0源码
  6. 05 - @property 后面所加的关键词
  7. php echo nbsp,关于include里面的函数echo的问题
  8. UNet以ResNet34为backbone in keras
  9. python策略模式包含角色_Python 之策略模式
  10. 黑马程序员————java中面向对象的三大特性
  11. 05《基于深度卷积神经网络的车型识别研究》学习总结
  12. 怎样将exe打包成服务运行
  13. OpenCV4机器学习(一):OpenCV4+VS2017环境搭建与配置
  14. 【Http认证方式】——Basic认证
  15. android 蓝牙耳机 sco,Android:通过Sco蓝牙耳机播放声音
  16. 5分钟就能做一个Excel动态图表,你确定不学学?(纯gif教学)
  17. UEFI下Windows引导过程
  18. 网卡的TSO卸载功能
  19. Mac小技巧|怎么移动Mac状态栏的图标
  20. 笔记本光驱拆解——让整个世界变得安静

热门文章

  1. web安全101之如何理解XXE?
  2. 内核对象用于线程同步
  3. 1.17 项目实例:模仿斗地主洗牌发牌小游戏
  4. 1049 Counting Ones (30 分)【难度: 难 / 知识点: 分治 / DP】
  5. 【PAT乙级】1090 危险品装箱 (25 分)
  6. 【图片和pdf】相关网站
  7. Java的13个规范
  8. 我在实际工作中用的最多的 git 命令
  9. 怎么简述计算机网络的含义,计算机网络复习资料-含简答题参考答案
  10. java xpath 命名空间_【转】玩转 XPath 和缺省命名空间(Default Namespaces)