网站首页 > 教程文章 正文
背景
当下云计算、大数据盛行的背景下,大并发和大吞吐量的需求已经是摆在企业面前的问题了,其中网络的性能要求尤为关键,除了软件本身需要考虑到性能方面的要求,一些硬件上面的优化也是必不可少的。
作为一名测试工作者,对于性能测试的问题肯定不会陌生,但是测试不仅仅是执行和收集数据,更多的应该是分析问题、找到性能瓶颈以及一些优化工作。
毕竟在客户现场测试性能的时候,能够通过一些系统层面的调优,提升软件的性能,那对项目无疑是一件锦上添花的事。
指标
不管你做何种性能测试,指标是绕不过去的事,指标是量化性能测试的重要依据。衡量某个性能的指标有很多,比如衡量数据库性能通常用TPS、QPS和延时,衡量io性能通常用iops、吞吐量和延时,衡量网络的性能指标也有很多,在业界有一个RFC2544的标准,参考链接:https://www.rfc-editor.org/rfc/rfc2544。
这里稍微解释一下几个指标:
背靠背测试:在一段时间内,以合法的最小帧间隔在传输介质上连续发送固定长度的包而不引起丢包时的数据量。
丢包率测试:在路由器稳定负载状态下,由于缺乏资源而不能被转发的帧占所有该被转发的帧的百分比。
时延测试:输入帧的最后一位到达输入端口到输出帧的第一位出现在输出端看的时间间隔。
吞吐量测试:没有丢包情况下能够转发的最大速率。
通常客户对于吞吐量和时延的指标是比较关心的,吞吐量反应了系统的并发的处理能力,时延反应了整体业务的响应时间。
测试准备
本文以网卡中的战斗机intel X710为测试对象,进行小包的吞吐量测试。
Tips:通常大包的测试可以达到线速,小包则很难线速,相同mtu下,包越小单位时间内cpu处理的包数越多,cpu的压力越大。
测试拓扑
在被测设备上插入X710网卡,使用网卡的2个网口建立linux bridge,通过测试仪发送接收数据包:
[root@localhost~]#brctl addbr test
[root@localhost~]#brctl addif test enp11s0f2 enp11s0f3
[root@localhost~]#ip link set test up
[root@localhost~]#brctl show
bridge name bridge id STP enabled interfaces
test 8000.6cb311618c30 no enp11s0f2
enp11s0f3
virbr0 8000.5254004c4831 yes virbr0-nic
3.2硬件信息
有个伟人曾说过,“如果性能测试不谈硬件,那么就和恋爱不谈结婚一个道理,都是耍流氓”。
鲁迅:"我没说过!"题外话,这里先简单说一下数据包进入网卡后的流程:数据包进入到网卡后,将数据缓存到服务器内存后通知内核进行处理,接着协议栈进行处理,通常netfilter也是在协议栈去处理,最后应用程序从socker buff读取数据。
言归真正,本文测试采用的是国产之光飞腾S2500服务器。
4、测试调优
针对以上拓扑,发送128字节万兆双向流量,用RFC2544标准进行测试。
RFC2544的标准是0丢包测试吞吐量,结果是818Mbps
以上都是前菜,接下来是本文的重头戏,根据已有资源做一些优化,提升“测试”性能,让客户满意。
4.1调整队列数
调整网卡的队列数,利用网卡的多队列特性,不同的队列通过中断绑定到不同的cpu,提升cpu处理性能,提升网络带宽。
调整队列数,这里也不是越大越好,因为服务器的cpu个数是有上限的,队列多的话会出现多个中断绑定在同一个cpu上,这里我服务器单个numa有8个cpu,修改队列数为8。
[root@localhost~]#ethtool-l enp11s0f2
Channel parameters for enp11s0f2:
Pre-set maximums:
RX:0
TX:0
Other:1
Combined:128
Current hardware settings:
RX:0
TX:0
Other:1
Combined:8
因为数据包会根据hash来进入到多个收包队列,因此发送数据包的时候,可以选择源ip变化的流来确保使用了网卡的多队列,可以查看网卡的队列计数。
……
由于作者版权要求,仅展示文章的一部分,如需阅读完整版文章,可以私信回复”文章“即可免费获取。
最后:
1)关注+私信回复:“测试”,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试等。
2)关注+私信回复:"入群" 就可以邀请你进入软件测试群学习交流~~
猜你喜欢
- 2025-05-08 面试滴滴科技,被按在地上摩擦,鬼知道我经历了什么?
- 2025-05-08 海量结构化数据存储技术揭秘:Tablestore存储和索引引擎详解
- 2025-05-08 系统性能优化与Java代码编写性能考虑
- 2025-05-08 记一次接口执行时间和响应时间相差大的排查过程
- 2025-05-08 Java-多线程(并发)(Java多线程并发执行并发控制并发数)
- 2025-05-08 轻量级低成本高性能的大表count/sum方案
- 2025-05-08 架构师:如何设计一个秒杀系统?(秒杀系统原理)
- 2025-05-08 电商app测试点有哪些,江苏徐州权威的第三方软件测评机构推荐
- 2025-05-08 京东大佬问我,你如何设计一个百万级别TPS订单系统?
- 2025-05-08 干货!详解服务器端和移动端性能测试指标
- 05-08云虚拟电脑与操作云电脑:相同还是不同?
- 05-08【三.丰.云】免费虚拟主机和免费云服务器,真的不错
- 05-08三丰云免费虚拟主机和云服务器评测
- 05-08阿贝云:免费的虚拟主机和云服务器,让我爱上云计算
- 05-08云服务器与虚拟主机的区别解析(云服务器与虚拟主机的区别解析图)
- 05-08(可以搭建游戏无盘)推荐一个免费云服务器,免费虚拟主机
- 05-08【阿贝云】免费云主机,免费虚拟主机
- 05-08免费云服务器和虚拟主机(免费云服务器和虚拟主机的区别)
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)