跳到主要内容
版本:v6.x

WAF性能数据

本文记录 2026-08-14 完成的 WAF 独立场景性能测试。四个场景分别预热、运行和采集,不包含混合流量。

测试结果

场景WAFRPSP50P95P99正式轮错误
正常小 GET关闭144,023.2633.53 ms47.757 ms56.70 ms0
正常小 GET开启129,598.1635.98 ms55.588 ms64.11 ms0
SQL 注入开启81,646.5156.62 ms84.099 ms2.30 s0
XSS开启80,775.7857.98 ms86.812 ms2.70 s0
  • 正常 GET 开启 WAF 后吞吐损失为 10.02%,P50/P95/P99 分别增加 2.45/7.831/7.41 ms。
  • SQLi 与 XSS 的阻断吞吐均超过 8 万 RPS,但 5000 并发下 P99 已受 worker 排队影响。
  • 四个正式轮均无 socket error、wrk timeout、listen overflow 或 listen drop。
  • SQLi/XSS 全部被拦截且未回源;源站 CPU 分别为 0.03% 和 0.02%。

测试条件

项目配置
链路压测机 172.29.4.133 → 节点 172.29.4.134 → 源站 172.29.4.135:18080
机器三台均为 16 vCPU、14 GiB
压测wrk 4.1.0,8 线程,5000 连接,15 秒预热,30 秒正式运行,单轮
节点OpenResty 1.31.1.1,12 worker 固定 CPU4~15,CPU0~3 预留
连接keepalive_requests=10000,超时 30 秒
WAF内置模块防护全部开启;自动封禁关闭
其他缓存、gzip、限速、普通访问日志和 WAF 攻击日志写出关闭

各请求均使用独立脚本并携带唯一编号:

场景请求
正常 GETGET /waf-perf?id=<唯一编号>
SQLiid=<唯一编号>%27%20OR%20%271%27=%271%27--%20
XSSJSON POST:{"comment":"<script>alert(<唯一编号>)</script>"}

正式命令模板:

WAF_PERF_HOST=<waf-off.perf.test|waf-on.perf.test> \
wrk -t8 -c5000 -d30s --timeout 30s --latency \
-s /root/waf-perf/<normal_get.lua|sqli.lua|xss.lua> \
http://172.29.4.134/waf-perf