Linux之网络性能测试工具netperf实践

news2024/11/15 15:47:00

一、netperf简介

  Netperf是一种网络性能的测量工具,主要针对基于TCP或UDP的传输。Netperf根据应用的不同,可以进行不同模式的网络性能测试,即批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式。Netperf测试结果所反映的是一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多快的速度接收数据。
  Netperf工具以client/server方式工作。server端是netserver,用来侦听来自client端的连接,client端是netperf,用来向server发起网络测试。在client与server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,client与server之间会再建立一个测试连接,用来来回传递着特殊的流量模式,以测试网络的性能。

二、安装步骤

1、安装gcc编译环境

[root@s142 ~]# yum install -y gcc*

2、下载netperf软件包

[root@s142 software]# wget https://github.com/HewlettPackard/netperf/archive/refs/tags/netperf-2.7.0.zip

3、解压软件包

[root@s142 software]# unzip netperf-2.7.0.zip

4、预编译

[root@s142 software]# cd netperf-netperf-2.7.0/
[root@s142 netperf-netperf-2.7.0]# ./configure

5、编译

[root@s142 netperf-netperf-2.7.0]# make
make all-recursive

make[2]: Leaving directory `/opt/software/netperf-netperf-2.7.0’
make[1]: Leaving directory `/opt/software/netperf-netperf-2.7.0’

5、安装

[root@s142 netperf-netperf-2.7.0]# make install

6、查看命令版本

[root@s142 netperf-netperf-2.7.0]# netserver -V
Netperf version 2.7.0
[root@s142 netperf-netperf-2.7.0]# netperf -V
Netperf version 2.7.0

7、获取命令帮助

  实际上如果不执行编译安装命令,也可以在src目录下找到命令,并直接执行命令。当然我们执行了编译安装就不需要切换到编译目录下执行命令了,可以在任意目录下执行这两个命令。

[root@s142 src]# ./netserver --help
./netserver: invalid option – ‘-’

Usage: netserver [options]

Options:
-h Display this text
-D Do not daemonize
-d Increase debugging output
-f Do not spawn chilren for each test, run serially
-L name,family Use name to pick listen address and family for family
-N No debugging output, even if netperf asks
-p portnum Listen for connect requests on portnum.
-4 Do IPv4
-6 Do IPv6
-v verbosity Specify the verbosity level
-V Display version information and exit
-Z passphrase Expect passphrase as the first thing received
在这里插入图片描述

三、netperf网络性能测试实践

1、测试规划

  netperf工具工作模式为server/client模式,所以我们需要两台测试服务器,都安装netperf工具,然后一端模式服务端,一端模拟客户端。
在这里插入图片描述

2、批量数据(TCP流)传输测试

  • 在s152服务器上运行服务端
    Netperf缺省情况下进行TCP批量传输,即-t TCP_STREAM。测试过程中,netperf向netserver发送批量的TCP数据分组,以确定数据传输过程中的吞吐量。

[root@s152 netperf-netperf-2.7.0]# netserver -p 8888
Starting netserver with host ‘IN(6)ADDR_ANY’ port ‘8888’ and family AF_UNSPEC
[root@s152 netperf-netperf-2.7.0]# netstat -tnpl |grep 8888
tcp6 0 0 :::8888 ::😗 LISTEN 9043/netserver

  • 在s142客户端上测试连接
    通过测试结果可以看到使用16384字节大小socket发送缓存,接受缓存大小为87380字节,历时10.26秒,带宽吞吐量为93.96Mbit/s。

[root@s142 netperf-netperf-2.7.0]# netperf -H 192.168.0.152 -p 8888
在这里插入图片描述

3、批量数据(UDP流)传输测试

  • 在s152服务器上运行服务端
    Netperf测试UDP数据包无需在服务器端指定参数,所以不用重启服务器端,只需要在客户端加上-t UDP_STREAM

[root@s152 netperf-netperf-2.7.0]# netserver -p 8888

  • 在s142客户端上测试连接
    UDP测试结果有两行,第一行显示的是客户端的发送统计,这里的吞吐量表示Netperf向本地socket发送分组的能力。第二行显示的是服务器端接收的情况,由于UDP协议的不可靠性,远端系统的接收吞吐量要远远小于发送出去的吞吐量。

[root@s142 netperf-netperf-2.7.0]# netperf -t UDP_STREAM -H 192.168.0.152 -p 8888 – -m 1024 -M 1024 -s 16384 -S 16384在这里插入图片描述

4、TCP长连接性能测试

  • 测试请求/应答(request/response)网络流量的性能,TCP_RR模式
    TCP_RR方式的测试对象是多次TCP request和response的交易过程,但是它们发生在同一个TCP连接中,这种模式常常出现在数据库应用中。数据库的client程序与server程序建立一个TCP连接以后,就在这个连接中传送数据库的多次交易过程。Netperf输出的结果也是由两行组成。第一行显示本地系统的情况,第二行显示的是远端系统的信息。

[root@s142 netperf-netperf-2.7.0]# netperf -t TCP_RR -H 192.168.0.152 -p 8888
[root@s142 netperf-netperf-2.7.0]# netperf -t TCP_RR -H 192.168.0.152 -p 8888 – -r 500,500
在这里插入图片描述

5、TCP短连接性能测试

  • 测试请求/应答(request/response)网络流量的性能,TCP_CRR模式
    与TCP_RR不同,TCP_CRR为每次交易建立一个新的TCP连接。最典型的应用就是HTTP,每次HTTP交易是在一条单独的TCP连接中进行的。因此,由于需要不停地建立新的TCP连接,并且在交易结束后拆除TCP连接,交易率一定会受到很大的影响。

[root@s142 netperf-netperf-2.7.0]# netperf -t TCP_CRR -H 192.168.0.152 -p 8888
[root@s142 netperf-netperf-2.7.0]# netperf -t TCP_CRR -H 192.168.0.152 -p 8888 – -r 500,500
在这里插入图片描述

四、常用参数说明

1、netserver命令常用参数说明

参数参数说明
-h获取命令帮助
-V查看命令版本
-p指定监听端口
-4指定IPv4协议
-6指定IPv6协议
-D不在后台运行,默认后台运行
-d增加debug输出
-L使用主机名监听
-N不输出debug信息

2、netperf命令常用参数说明

  netperf命令格式为:netperf [global options] – [test specific options]
如下列表中的-m,-r这些参数都是测试专有参数,需要写在–后。

参数参数说明
-t testname指定进行的测试类型(TCP_STREAM,UDP_STREAM,TCP_RR,TCP_CRR,UDP_RR),可以通过man netperf命令查看有哪些类型
-H ip指定远端运行netserver的server IP地址
-p port指定远端运行netserver的port端口
-L testlen指定测试时间,默认10s,单位秒
-V查看命令版本
-h获取命令帮助
-s size设置本地系统的socket发送与接收缓冲大小
-S size设置远端系统的socket发送与接收缓冲大小
-m size设置本地系统发送测试分组的大小
-M size设置远端系统接收测试分组的大小
-r req,resp设置request和reponse分组的大小
-D对本地与远端系统的socket设置TCP_NODELAY选项

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/187513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

公司通知要大裁员,hr太强势,和所有人吵起来,老板见势不妙,不得不答应大家要求,把HR一起裁掉了!...

在裁员中,hr一般都会代表老板的利益和员工对抗,但如果hr和员工闹翻了,老板会维护hr吗?一位网友说:一上班就收到消息要裁员,立马让报上名单面谈,锁电脑关权限。后面那些人面谈的时候吵起来了&…

OpenAI Chatgpt注册及使用教程

零、什么是chatgpt?​ 1、简介 ChatGPT(Chat Generative Pre-trained Transformer)是OpenAI于 2022 年 11 月推出的聊天机器人。它建立在 OpenAI 的GPT-3大型语言模型家族之上,并经过微调(一种迁移学习的方法)…

双点双向的ISIS与OSPF、OSPF与OSPF、ISIS与ISIS环境以路由策略解决(1tag、2tag、4tag介绍与配置)

3.1.1 双点双向的ISIS与OSPF、OSPF与OSPF、ISIS与ISIS环境以路由策略解决(1tag、2tag、4tag介绍与配置) OSPF与ISIS双点双向 次优的产生与解决: 由于OSPF引入外部路由之后其优先级为150,再由ASBR进行双向引入之后。 原先OSPF外部…

闲鱼自动化软件——筛选/发送系统 V20已经测试完毕

做程序,就是不断地改,不断地优化。当改动达到一定程序,已经和前面形成断代,程序的升级时刻便到了。V20做了哪些更改或优化。1。优化抓取:在抓取环境优化参数,使抓取更顺滑,抓取数据效果上更准确…

智能家居创意DIY-Homekit智能灯

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

若依-excel预览功能实现

实现效果及源码 实现效果如下图所示: 实现思路: 1.动态表格:定义表头数组,表格遍历表头生成表格列 2.读取excel文件内容,封装表头,绑定表格数据 代码修改 首先参考若依官网,先实现excel导入功…

C++基础——C++ 字符串

C基础——C 字符串C 字符串C 风格字符串C 中的 String 类C 字符串 C 提供了以下两种类型的字符串表示形式: C 风格字符串C 引入的 string 类类型 C 风格字符串 C 风格的字符串起源于 C 语言,并在 C 中继续得到支持。字符串实际上是使用 null 字符 ‘…

126、【回溯算法】leetcode ——332. 重新安排行程:回溯算法(C++版本)

题目描述 原题链接:332. 重新安排行程 解题思路 本题要解决的问题: 需要构建起始与目的机场的映射关系;每次选择目的机场时,需要选择当前最小字母顺序的机场;从“JFK”之后依次飞往,并且可能会有多条路径…

58同城AI Lab在WeNet中开源Efficient Conformer模型

2022年8月,58同城TEG-AI Lab语音技术团队完成了WeNet端到端语音识别的大规模落地,替换了此前基于Kaldi的系统,并针对业务需求对识别效果和推理速度展开优化,取得了优异的效果,当前录音文件识别引擎处理语音时长达1000万…

非标设备ERP管理系统可以帮助企业解决哪些管理难题?

多品种、小批量、交货周期短、非标准化生产是大多数非标设备制造企业共同的特性,这就要求非标设备制造企业应具备足够的经营、技术、生产和管理力量,否则就会顾此失彼,产品质量难以得到保证。非标设备制造企业常见的管理难题(1&am…

DynaSLAM-2 DynaSLAM中Mask R-CNN部分源码解析(Ⅰ)

目录 1.Mask R-CNN源码地址 2.Mask R-CNN效果 3.项目配置 4.源码使用 1.Mask R-CNN源码地址 Mask R-CNN源码地址https://github.com/matterport/Mask_RCNN/releases 这里我们拿Mask R-CNN2.1版本进行讲解。 2.Mask R-CNN效果 最传统最核心的功能就是物体检测了…

4款让人心疼的电脑软件,由于免费又实用,常被同行挤压

许多小众软件,免费、实用、体验好、无广告,出淤泥而不染,却因过于良心备受排挤,让人唏嘘。 1、oCam 市面上的视频录屏工具,要么限制时长,要么附上水印,需要使用完整功能必须付费,oca…

Java项目调用C++端的订阅功能,获得推送数据(从设计到代码全栈完整过程)

前言 有关java和C的交互的基本概念和知识,本文不再详述。有需要的可以参考我的这篇文章。 JNI、DLL、SO等相关概念 开发背景 C项目端开发了一套股票市场资讯推送的功能,多个小组都会用到该功能,为了避免重复开发,中台小组要负担…

SpringBoot项目集成logback日志分等级配置

背景: 日志的作用: boot项目集成logback: 一、单模块项目配置: 1、添加依赖 2、添加logback-spring.xml配置文件到resources目录下 3、接下来启动一下项目,就可以看到我们的日志已经区分等级打印了 二、多微服务…

DVWA之SQL注入

Low(数字型注入)1、先确定正常和不正常的回显回显,就是显示正在执行的批处理命令及执行的结果等。输入1时,有回显,是正常的 数据库语句: select * from table where id 1输入5时,有回显,是正常的 数据库语句…

Metasploit工具使用(下)

Metasploit工具使用1.Metasploit简介1.1.Metasploit下载1.2.其它参考1.3.本章简述2.Meterpreter2.1.简介2.2.优点2.3.注意事项2.4.整体攻击流程2.4.1.创建后门2.4.2.监听后门2.4.3.运行后门2.4.4.成功获得3.渗透后命令汇总3.1.迁移进程3.1.1.查看当前进程3.1.2.获取当前进程PID…

你可能不知道的JS使用技巧

数组扁平化 老方案 let arr [1, 2, 4, 6,[5, 4, 5,[98, 3], [34], [7]]]; arr.toString().split(,).map(Number);新方案: flat() const arr [1, [2, [3, [4, 5]]], 6]; console.log(arr.flat(Infinity));深拷贝 老方案: JSON.parse(JSON.stringify(…

数据分析:Matplotlib数据可视化详细教程

1.主要分为4种:柱状图,直方图,散点图,饼状图 可视化的工具选择:可视化的Python软件包 工具的优点:可以自制图形定义功能 绘图程序步骤: 第一步导包中Pyplot模块,以as为别名引入包…

蓝桥杯重点(C/C++)(随时更新,更新时间:2023.1.31)

点关注不迷路,欢迎推荐给更多人,大约两天更新一次,建议点赞收藏加关注 本次更新内容:2.18 递归 目录 1 技巧 1.1 取消同步(节约时间,甚至能多骗点分,最好每个程序都写上) 1.…

代谢组学文献解读:高胆固醇饮食与脂肪肝相关肝癌的关系

代谢组学文献分享,非酒精性脂肪性肝病(Non-alcoholic fatty liver disease , NAFLD)是全世界日趋普遍的慢性肝病。随着肥胖和代谢综合征在全球的流行,近20年亚洲国家NAFLD增长迅速,在上海、北京、广州和香港等地区成人NAFLD患病率…