[转帖]【dperf系列-5】使用dperf进行性能测试(初级)
https://zhuanlan.zhihu.com/p/451341132
dperf是一款高性能的开源网络压力测试仪,是Linux基金会旗下的DPDK官方生态项目。本文介绍如利用dperf在两台物理服务器之间互打http流量进行基本性能测试:每秒新建连接数、并发连接数、带宽、PPS。本次测试示例客户端与服务器均使用1个核、1个网口。客户端、服务器上已经安装了dperf。
环境说明
| 项目 | 配置 |
|---|---|
| 物理服务器(客户端) | 大页内存>=40G 数据网卡>=10GbpsIP=6.6.245.3-6.6.245.102地址:6.6.245.3-6.6.245.102,100个IP网关:6.6.245.1 |
| 物理服务器(服务器) | 大页内存>=40G 数据网卡>=10GbpsIP=6.6.247.1地址:6.6.247.3网关:6.6.247.1 |
| 三层交换机 | 客户端网关地址:6.6.245.1 服务器网关地址:6.6.247.1 |
| dperf版本 | V1.0.0 |

网络拓扑图
准备工作
dperf安装
请在客户端与服务器上分别安装dperf。安装方请参考这篇文章:ArtNowBen:【dperf系列-4】dperf快速上手。
熟悉配置
配置手册详细说明了dperf的所有配置项含义;建议在往下阅读前,先读一遍此文档。
https://github.com/baidu/dperf/blob/main/docs/configuration-CN.md
新建连接数测试
测试方法
在新建连接数测试中,我们使用短连接,每个连接只一个HTTP请求与响应,报文序列如下:
客户端发送SYN
服务器发送SYN+ACK
客户端发送请求(最小HTTP请求)
客户端发送请求(最小HTTP响应)
服务器发送响应+FIN
客户端发送FIN + ACK
服务器发送ACK
新建连接数测试会消耗较多的连接数(五元组),在新建连接数测试中,建议dperf连接总数是新建连接数目标的10倍以上;因为tcp超时为2秒,4次超时则认为连接失败。
dperf中连接总数 = 客户端IP数 * 65535 * 服务器IP数 * 监听端口数
为了达到较高的性能,我们配置客户端较多的IP,本例中客户端使用了100个IP;服务器监听端口数为5。
服务器配置
#daemon
mode server
tx_burst 128
cpu 48
duration 3m
payload_size 1
#numa2
port 0000:87:00.0 6.6.247.3 6.6.247.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 5
- 监听IP是6.6.247.3,监听端口范围为:80-84
- 只接受客户端地址范围是:6.6.245.3-6.6.245.102;tcp报文的源地址不在这个范围就丢包或RST,ping不受影响
- 服务器只绑定一个网口,设置与交换机的互连IP为6.6.247.3(复用了监听IP),网关为6.6.247.1(交换机IP)
- 新建连接数测试不能开启keepalive
- 设置HTTP响应长度为最小:payload_size 1
客户端配置
mode client
tx_burst 128
launch_num 10
cpu 0
payload_size 1
duration 2m
cps 2.1m
#port pci addr gateway [mac]
port 0000:01:00.0 6.6.245.3 6.6.245.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 5
- 给出服务器的监听地址,客户端向这个地址发起连接。 IP:6.6.247.3 监听端口范围为:80-84
- 客户端使用地址池的地址作为源地址:6.6.245.3-6.6.245.102
- 客户端只绑定一个网口,设置与交换机的互连IP为6.6.245.3(复用了地址池内的IP),网关为6.6.245.1(交换机IP)
- 设置HTTP响应长度为最小:payload_size 1
- 设置CPS目标为2m,请根据CPU能力灵活调整cps值,建议先设置较小的值,如"10k"
运行dperf
#运行服务器
dperf -c server-cps-port1-1.conf
#运行客户端
dperf -c client-cps-port1-1.conf
并发连接数测试
测试方法
在并发连接数测试中,我们要使用长连接,每个连接持续发送HTTP请求、响应。在测试过程中,并发连接数持续增加,直到达到测试目标;我们可以通过客户端的每秒新建连接数来控制爬坡斜率;在测试并发连接数时,建议为客户端配置较大请求发送的间隔,如60秒;payload_size设置为最小。
服务器配置
#daemon
mode server
tx_burst 128
cpu 48
duration 10m
payload_size 1
keepalive 1
#numa2
port 0000:87:00.0 6.6.247.3 6.6.247.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 32
客户端配置
mode client
tx_burst 128
launch_num 10
cpu 0
payload_size 1
duration 10m
cps 0.5m
cc 100m
keepalive 60s
#port pci addr gateway [mac]
port 0000:01:00.0 6.6.245.3 6.6.245.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 32
带宽测试
测试方法
带宽的测试,是在并发连接数的基础上基础上进行的:
- 增大报文长度,payload_size设置为1400
- 降低并发连接数,如cc设置为3000
- 提升请求发送速度,如从60秒发送1次,提升为1毫秒发送一次
- 降低cps,由于并发度连接数较低,应该把新建速度同时调低
服务器配置
#daemon
mode server
tx_burst 128
cpu 48
duration 3m
payload_size 1400
keepalive 1
#numa2
port 0000:87:00.0 6.6.247.3 6.6.247.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 5
服务器配置
mode client
tx_burst 128
launch_num 10
cpu 0
payload_size 1400
duration 2m
cps 400
cc 3000
keepalive 1ms
#port pci addr gateway [mac]
port 0000:01:00.0 6.6.245.3 6.6.245.1 b4:a9:fc:ab:7a:85
# addr_start num
client 6.6.245.3 100
# addr_start num
server 6.6.247.3 1
# port_start num
listen 80 5
PPS测试
PPS(packets perf second)是网络设备的一个重要指标,测试PPS只需要在并发连接数的基础上做少量调整,与带宽测试类似。
- 降低报文长度,payload_size设置为1
- 设置合适的并发连接数
- 提升请求发送速度,如从60秒发送1次,提升为1毫秒发送一次
- 降低cps,由于并发度连接数较低,应该把新建速度同时调低
总结
本文使用dper客户端打dperf服务器,介绍了新建、并发、带宽、PPS的测试方法。对于要测试DUT的场景,测试方法相同,修改dperf发送、接收地址即可。复杂的使用场景请关注后续文章。
如果喜欢,请去github上为dperf加个star,支持一下,非常感谢!
[转帖]【dperf系列-5】使用dperf进行性能测试(初级)的更多相关文章
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(三) Validation Application Block (初级) 企业库提供了一个很强大的验证应用程序模 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (初级) 企业库加密应用程序模块提供了2种方 ...
- 黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级)
原文:黄聪:Microsoft Enterprise Library 5.0 系列教程(一) : Caching Application Block (初级) 本篇文章具体官方解释请参照以下链接: h ...
- [转帖]HTTPS系列干货(一):HTTPS 原理详解
HTTPS系列干货(一):HTTPS 原理详解 https://tech.upyun.com/article/192/HTTPS%E7%B3%BB%E5%88%97%E5%B9%B2%E8%B4%A7 ...
- [转帖]Linux系列之SAR命令使用详解
Linux系列之SAR命令使用详解 sar是System Activity Reporter(系统活动情况报告)的缩写.这个工具所需要的负载很小,也是目前linux中最为全面的性能分析工具之一.此款工 ...
- 2015年11月26日 Java基础系列(三)ThreadLocal类初级学习
序,ThreadLocal类是为了解决多线程的安全问题.线程安全的意思也就是说每个线程操作自己的变量,不要对其他线程的值造成影响. 在很多情况下,ThreadLocal比直接使用synchronize ...
- 《Unity系列》Json文件格式的解析——初级教程
Json作为轻量级的数据交换格式,被广泛应用于网络数据传输中.相关的解析工具层出不穷,一般掌握一个工具的应用其他的相应工具就能立马学会. 这里以C#中的LitJson为例给大家示范一下解析工具的用法. ...
- [转帖]APP逆向神器之Frida【Android初级篇】
APP逆向神器之Frida[Android初级篇] https://juejin.im/post/5d25a543e51d455d6d5358ab 说到逆向APP,很多人首先想到的都是反编译,但是单看 ...
- 【转帖】sysbench的安装和做性能测试
iMySQL | 老叶茶馆 sysbench的安装和做性能测试 http://imysql.cn/node/312 我仿照这个学的 但是 需要用更新的版本才可以. By yejr on 14 六月 ...
- Enterprise Library 5.0 系列教程
1. Microsoft Enterprise Library 5.0 系列教程(一) Caching Application Block (初级) 2. Microsoft Enterprise L ...
随机推荐
- Java PDF文档转换 — PDF转Excel、SVG转PDF
概述 Spire.PDF for Java支持将PDF文档高质量地转换为XPS.图片.SVG.Word.HTML和PDF/A格式,以及支持将XPS.HTML文档转换为PDF格式.本文将通过代码演示来介 ...
- 数仓性能优化:倾斜优化-表达式计算倾斜的hint优化
本文分享自华为云社区<GaussDB(DWS)性能调优:倾斜优化-表达式计算倾斜的hint优化>,作者: 譡里个檔 . 1.原始SQL SELECT TMP4.TAX_AMT, CATE. ...
- 光大银行刘淼:基于华为云GaussDB(DWS) 数据仓库创新实践
摘要:面向未来数据平台3.0要做架构减法,平台由N->1,华为云GaussDB(DWS)未来作为数据仓库唯一平台,数据链路实现从数据湖直接到华为云GaussDB(DWS)数据仓库. 日前,华为举 ...
- Mvc管道模型和处理请求的流程
管道事件 ASP.NET MVC请求到响应的基本流程 原文链接:https://blog.csdn.net/qq_37112587/article/details/112340916
- Solon Cloud 2.2.10 架构图发布
Solon Cloud 是在 Solon 的基础上构建的微服务开发套件.以标准与规范为核心,构建丰富的开放生态.为微服务开发提供了一个通用防腐层(即不用改代码,切换配置即可更换组件). 本次发布,展示 ...
- Solon Web 开发,三、打包与运行
Solon Web 开发 一.开始 二.开发知识准备 三.打包与运行 四.请求上下文 五.数据访问.事务与缓存应用 六.过滤器.处理.拦截器 七.视图模板与Mvc注解 八.校验.及定制与扩展 九.跨域 ...
- shell 脚本之一键部署安装 Nginx
今天咸鱼给大家分享个源码编译安装 Nginx 的 shell 脚本 这个 shell 脚本可重复执行 完整源码放在最后 定义一个变量来存放 nginx 版本号 version=1.15.4 nginx ...
- Codeforce:131A. cAPS lOCK
原题链接 ╮(╯▽╰)╭这题题目一开始没看明白,导致wa几次.如果全是大写或者出了首字母是小写其他为大写,则转换为第一个字母大写,其他的小写 ,如果不是以上两种情况则不作处理. ╮(╯▽╰)╭水题还错 ...
- Codeforces Round #717 (Div. 2) 个人题解 A~C (A思維,B位運算,C背包DP)
1516A. Tit for Tat 題意: 給定大小為 \(n\) 的數組和可操作次數 \(k\) , 每次操作都選定兩個數(如果 \(1 \le a_i\) ),使第一個數 - \(1\) ,另一 ...
- vivo 调用链 Agent 原理及实践
一.项目背景 2017年,vivo互联网研发团队认为调用链系统对实际业务具有较大的价值,于是开始了研发工作.3年的时间,调用链系统整体框架不断演进--本文将介绍vivo调用链系统 Agent 技术原理 ...