源码安装nginx后性能测试需构建可控验证闭环:先启用stub_status等关键模块并配置合理worker参数,再以最小静态资源隔离干扰,用ab初筛、wrk梯度压测,同步监控qps、p95延迟与cpu使用率,最后按连接数、系统限制、端口耗尽、日志阻塞逐层定位瓶颈。

源码安装 Nginx 后,测试其基准性能与并发极限,关键不是“装完就压”,而是构建一个可控、可比、可观测的验证闭环:从最小静态响应起步,隔离干扰项,用合适工具施加梯度负载,并同步看 QPS、延迟分布和系统资源变化。
一、先确保环境干净且配置合理
源码编译的 Nginx 默认不带某些关键模块(如 http_stub_status_module),必须在 configure 阶段显式启用:
./configure --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-zlib- 编译安装后,检查是否生效:
nginx -V 2>&1 | grep status,应有输出 - 在
nginx.conf中启用状态页:
location /nginx_status {
stub_status;
allow 127.0.0.1;
deny all;
} - 确认核心参数已设合理值:
worker_processes auto;
events {
use epoll;
worker_connections 4096;
multi_accept on;
}
二、用最小静态资源做首次基准摸底
避免后端、模板、日志等干扰,只测 Nginx 自身 HTTP 服务层能力:
- 准备一个纯静态文件,例如
/usr/local/nginx/html/test.html,内容为 2KB 纯文本或空 HTML - 关闭 access_log 和 error_log 的写入(临时注释掉
access_log指令),防止磁盘 I/O 成瓶颈 - 压测机与 Nginx 服务器分置,同局域网直连(禁用虚拟网卡、NAT、Docker 网络)
- 每次压测前清缓存:
sync && echo 3 > /proc/sys/vm/drop_caches
三、分阶段实测:从 ab 快速摸底到 wrk 梯度压测
不追求单次高并发,而要观察拐点:
-
ab 初筛(≤500 并发):
ab -n 10000 -c 200 -k http://nginx-ip/test.html
关注 Requests per second 和 Time per request (mean) 是否稳定;若失败率>1%,立即停查 ulimit 或连接限制 -
wrk 深度压测(推荐主力):
wrk -t4 -c800 -d120s --latency http://nginx-ip/test.html
逐步提高-c值(如 800→1200→1600→2000),每档跑 2–3 次,取中位数 - 重点盯三项指标同步变化:
– QPS 是否进入平台期或回落
– P95 延迟是否突增(跳升超 30% 是典型拐点信号)
–htop中 Nginx worker 进程 CPU 用户态(%us)是否持续 ≥85%
四、定位瓶颈并交叉验证
当 QPS 卡住、延迟飙升时,按链路逐层排查:
- 查连接数上限:
访问http://nginx-ip/nginx_status,看 Active connections 是否接近worker_processes × worker_connections - 查系统级限制:
ulimit -n(用户级)cat /proc/$(pgrep nginx)/limits | grep "Max open files"(进程级)sysctl net.core.somaxconn(内核连接队列) - 查是否受端口耗尽影响(反向代理场景):
ss -s | grep "TIME-WAIT",若超万级,需调大net.ipv4.ip_local_port_range - 查是否因日志阻塞:
临时关日志后重测,QPS 显著回升则说明磁盘或日志格式是瓶颈











