大促上线前最怕的一句话:”能扛住吗?”——靠感觉回答等于赌博。压力测试就是把这个问题变成一个确切的数字:你的网站在多少并发下开始崩。本文用两款经典工具,带你测出真实承载上限并做容量规划。
一、两款趁手的压测工具
ab(Apache Bench):最经典,一条命令出结果,适合快速摸底:
apt install apache2-utils -y
ab -n 5000 -c 100 https://你的域名/ # 总5000请求,并发100
wrk:更现代、更能压出高并发,适合精细测试:
apt install wrk -y
wrk -t4 -c200 -d30s https://你的域名/ # 4线程,200连接,压30秒
二、看懂关键指标
- QPS / Requests per second:每秒处理请求数,越高越强,是核心成绩;
- 响应时间分布:不能只看平均值,重点看P99(99%请求的耗时)——平均50ms但P99达3秒,说明有严重长尾,用户体验已经崩了;
- 错误率(Non-2xx):一旦出现大量失败或超时,就是触到了承载天花板,记下此时的并发数;
- 找拐点:从并发50开始逐级加压(50→100→200→500),QPS随并发上升到某点后不升反降、错误率飙升——那个点就是你的真实上限。
三、压测时同步观察瓶颈在哪
压测的同时,另开窗口盯服务器:
top # CPU先满 → 算力瓶颈,看是应用还是数据库进程
iostat -x 1 # 磁盘util接近100% → IO瓶颈(数据库常见)
free -m # 内存耗尽触发swap → 内存瓶颈
对症下药:CPU瓶颈→开缓存/升配/换高主频;IO瓶颈→上NVMe/优化SQL;带宽瓶颈→大页面压测时若带宽先满,说明该升带宽或上CDN。压测的价值不只是得数字,更是暴露瓶颈。
四、容量规划:把数字变成决策
假设实测单机稳定QPS为500,大促预估峰值并发需求为1500,那么方案很清晰:优化提升单机上限、或横向加机器(配合独立服务器做后端 + Nginx负载均衡)、或用CDN卸载静态请求把动态压力降下来。留足20%—30%冗余余量应对突发,别把机器压到极限运行。
五、注意事项
- 从外部机器压测:在被测服务器本机压测会争抢资源,数据失真——用另一台VPS当压测源;
- 先在测试环境压:别拿生产站直接猛压,用免费试用VPS复制一份环境来测最稳妥;
- 物理机数据更可信:虚拟化的性能受邻居影响,压测结果波动大;物理独享机器的压测数据才是可复现的容量依据。
上线前测一次,比上线后崩一次便宜太多。把承载上限变成一个你知道的数字——这就是压测的全部意义。