薛定谔的BUG 23小时前
压力测试分两层:L4拼带宽与包量,L7拼计算,混淆二者是95%工程师的常态错误
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

对网络服务进行压力测试不是一门学科,而是两门。L4 和 L7 测试以根本不同的方式让系统崩溃,而混淆它们是基础设施测试报告中最常见的错误。

以下是让我彻底想明白的心智模型。

两个问题

每一次压力测试都回答以下两个问题之一:

L4:" 管道和连接机制能承受这么大的流量吗?"

L7:" 应用程序在负载下真的能完成它的工作吗?"

L4 攻击的是交付系统——路由器、防火墙、TCP 协议栈、conntrack 表。L7 攻击的是业务逻辑—— Web 工作进程、TLS 握手、数据库连接池、渲染管线。

打个比方:L4 是堵住通往大楼的所有道路,L7 是让一千个人挤到前台问问题。两者都能让系统瘫痪,但方式完全不同。

L4 到底消耗什么

三种截然不同的资源,人们总是把它们混为一谈:

1. 带宽(Gbps)。每秒原始比特数。由上行链路容量和上游清洗容量决定。

2. 每秒包数(PPS)。这是直觉失灵的地方。1 Gbps 的 64 字节小包大约是 195 万 PPS。同样 1 Gbps 的 1400 字节大包大约只有 8.9 万 PPS ——相差 23 倍。网络设备处理的是包,不是字节。一台中端防火墙可以轻松转发 9 Gbps 的大包,却可能被 3 Gbps 的小包打垮。

3. 连接状态(conntrack / 文件描述符)。SYN 洪水攻击和完整 TCP 连接洪水攻击瞄准的是连接表,不是带宽。一台设备可能 CPU 只用了 4%、上行链路空闲,却因为会话表满而在慢慢死掉。

快速换算参考:

PPS ≈ Gbps × 125,000,000 / 平均包大小(字节)

L7 到底消耗什么

应用层压力针对的是计算成本:

Web 工作进程 / 线程池——请求并发度

TLS 握手——非对称加密在服务端很贵,在客户端很便宜(这种不对称性正是 TLS 测试的全部意义所在)

数据库连接和查询执行——每个请求都会消耗 CPU 周期和内存

关键区别:L4 测试打的是设备和网络基础设施的物理上限,L7 测试打的是应用代码和计算资源的天花板。一个测试可能在网络层面没问题但应用层崩溃,反过来也一样。理解你要测的是哪一层,比盲目跑压测更重要。

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论