Nginx基准测试关键在于结果可比、可解释、能指导调优:ab适合快速摸底,wrk适用于高并发与长时压测;需明确目标、控制变量、优先静态资源、同局域网测试、清空系统缓存,并同步监控CPU、内存、连接数、文件描述符及网络指标。

直接上手做 Nginx 基准测试,关键不是比谁的数字大,而是让每次测试结果可比、可解释、能指导调优。wrk 和 ab 各有定位——ab 简单直观,适合快速摸底;wrk 更贴近真实高并发场景,支持多线程与长时压测,是生产级评估的主力工具。
明确测试目标与控制变量
测之前先想清楚:这次是要看极限 QPS?查 CPU 是否瓶颈?还是验证 gzip 开启后响应时间是否下降?目标不同,关注指标就不同。务必坚持“一次只改一个配置”,比如只调 worker_processes,其他全保持默认,否则无法归因。
- 静态资源压测优先用最小 HTML 文件(如
index.html,2KB 左右),排除后端逻辑干扰 - 测试机与 Nginx 服务器必须同局域网,避免公网抖动或带宽限制造成误判
- 每次测试前清空系统缓存:
sync && echo 3 > /proc/sys/vm/drop_caches,保证结果稳定
ab:轻量级入门,专注基础并发能力
ab 安装即用,适合快速验证单机吞吐下限。它对客户端资源消耗低,但并发数超过 2000 后自身可能成为瓶颈,不建议用于万级压测。
- CentOS/RHEL:
yum install -y httpd-tools;Ubuntu/Debian:apt install -y apache2-utils - 典型命令:
ab -n 10000 -c 500 http://127.0.0.1/(总请求数 10000,500 并发) - 重点关注输出中的 Requests per second(QPS)、Time per request(平均延时)、Failed requests(错误数)
wrk:高并发主力,支持真实负载模拟
wrk 利用事件驱动模型,单机轻松支撑数千并发连接,还能通过 Lua 脚本构造带 Header、Cookie 或路径参数的复杂请求,更贴近业务实际。
- 安装(Ubuntu):
sudo apt install build-essential libssl-dev git -y && git clone https://github.com/wg/wrk.git && cd wrk && make && sudo cp wrk /usr/local/bin/ - 基础命令:
wrk -t8 -c400 -d30s http://127.0.0.1/(8 线程、400 连接、持续 30 秒) - 加
--latency输出 P50/P95/P99 延时分布,这对发现长尾延迟特别有用 - 稳定性验证可用长时命令:
wrk -t4 -c1000 -d1800s http://127.0.0.1/(30 分钟耐力压测)
压测中必须同步监控的关键指标
只看 wrk 或 ab 的输出是盲人摸象。必须一边压测,一边盯住服务端真实状态:
-
CPU 使用率:用
htop或mpstat -P ALL 1观察各核负载是否均衡,是否存在单核打满 -
内存与连接数:
ss -s查 ESTAB 连接数,free -h看可用内存,防止 OOM -
文件描述符使用量:
cat /proc/$(pgrep nginx)/limits | grep "Max open files",确认未触达上限 -
网络收发包:
iftop -P http或nicstat 1,判断是否网卡或中断成为瓶颈











