——用真实案例搞懂QPS、并发、延迟怎么测
在Nginx运维中,“性能”不是凭感觉判断的——1台Nginx能抗多少并发?静态资源服务的QPS(每秒请求数)上限是多少?高并发下响应延迟会不会飙升?这些问题都需要通过性能测试工具量化验证。
本文针对初学者,详细讲解两款最常用的Nginx性能测试工具:Apache Bench(ab,轻量入门)和wrk(高并发进阶),结合真实测试场景(静态页面、API接口),带你一步步搞懂“怎么测、怎么看结果、怎么调优”。所有案例均基于Linux环境实操,复制命令即可上手。
一、为什么要做Nginx性能测试?
在开始工具学习前,先明确性能测试的核心目标——不是“测个数字”,而是解决实际问题:
- 验证上限:确认Nginx在当前配置下的并发能力(如“单台Nginx能支持1万并发连接”);
- 定位瓶颈:发现性能短板(如“QPS上不去是因为CPU满了,还是内存不够”);
- 验证优化效果:比如“开启gzip后,QPS提升了20%”,用数据证明优化有效;
- 容量规划:提前判断“应对双11 10万QPS,需要部署几台Nginx”。
本文测试环境说明(避免你测试时因环境差异导致结果偏差):
- 服务器:2核4G云服务器(CentOS 7),Nginx 1.24.0(默认配置,未调优);
- 测试目标:Nginx默认首页(
http://192.168.1.100/index.html,静态页面,大小约2KB); - 网络:服务器与测试机同局域网(避免公网带宽影响结果)。
二、Apache Bench(ab):轻量级入门工具
ab是Apache服务器自带的性能测试工具,优点是安装简单、命令直观,适合快速测试Nginx的并发能力和QPS,缺点是高并发下自身性能不足(超过1万并发可能不准)。
2.1 第一步:安装ab
ab工具包含在httpd-tools(CentOS)或apache2-utils(Ubuntu)包中,无需单独安装:
CentOS/RHEL系统:
# 安装httpd-tools(含ab工具)
yum install -y httpd-tools
# 验证安装(查看ab版本)
ab -V
# 输出类似:This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Ubuntu/Debian系统:
apt install -y apache2-utils
ab -V # 验证
2.2 核心概念:ab测试的3个关键参数
测试前先理解3个核心参数,否则看不懂命令和结果:
| 参数 | 含义 | 示例值 |
|---|---|---|
| 并发数(c) | 同时向Nginx发起请求的客户端数量(模拟多少用户同时访问) | 100、500 |
| 请求数(n) | 总共要发送的请求总数(并发数×循环次数,比如100并发×100请求=1万总请求) | 1000、10000 |
| 目标URL | 要测试的Nginx地址(静态页面/API接口) | http://192.168.1.100/index.html |
2.3 实战1:测试基础并发能力
需求:模拟100个用户同时访问Nginx默认首页,总共发送1000个请求,看QPS和延迟表现。
测试命令:
ab -c 100 -n 1000 http://192.168.1.100/index.html
-c 100:并发数100;-n 1000:总请求数1000;- 最后跟测试URL。
关键结果解读(不用看全部输出,重点关注这几行):
# 1. 基础信息(确认测试参数是否正确)
Server Software: nginx/1.24.0 # 目标服务器是Nginx 1.24.0
Server Hostname: 192.168.1.100 # 测试的IP
Server Port: 80 # 端口
# 2. 核心性能指标(重点看这部分)
Document Path: /index.html # 测试的页面
Document Length: 154 bytes # 页面大小(约154字节,我的测试页是简化版)
Concurrency Level: 100 # 实际并发数(和命令中-c一致)
Time taken for tests: 0.123 seconds # 测试总耗时(越短越好)
Complete requests: 1000 # 完成的总请求数(和命令中-n一致)
Failed requests: 0 # 失败的请求数(0表示无失败,正常)
# 3. QPS和延迟(最核心的两个指标)
Total transferred: 388000 bytes # 总传输数据量(含HTTP头)
HTML transferred: 154000 bytes # HTML内容总大小
Requests per second: 8130.08 [#/sec] (mean) # 平均QPS(每秒处理8130个请求,越高越好)
Time per request: 12.300 [ms] (mean) # 平均每个请求耗时(12.3毫秒,越低越好)
Time per request: 0.123 [ms] (mean,

最低0.47元/天 解锁文章
6160

被折叠的 条评论
为什么被折叠?



