完成项目开发后,要针对系统整体开展一次压测,以此满足客户上线前的性能需求,诸如页面打开时长不能超出 2 秒,复杂业务执行时长不能超出 5 秒等。大家很熟悉 Jmeter 工具,今日要介绍一款轻量级压测工具 Apache Bench,也就是常说的 ab。记得多年前,有客户询问系统是否用 ab 进行过压测?那时还不清楚 ab 这个简称所指的是什么。
为什么需要压测
想象一下,你精心设计的API,本以为能够扛住千人并发,然而上线之后却瞬间变成了“慢动作回放”,在这样的时候,你最为需要的是什么呢?并非是“可能”,并非是“感觉”,同样也不是类似于在我本地访问较为快速之类的话术,而是实实在在的数据!ab工具就是那个能够给予你“真知灼见”的工具,它身形小巧玲珑,却能够发挥出巨大的作用,其主要用途在于,评估Web服务器,在不同负载状况之下的性能表现(诸如服务器的响应时间、吞吐量等等)。不管是开展新应用的开发工作,亦或是完善当前已有的网站,ab均能够给你予以关键的数据方面的支撑,协助你全方位地知晓服务器的“抗压能力值”。ab具备以下这些优势:
ab的安装
安装(超简单)
Linux (Debian/Ubuntu):
用sudo,通过apt - get这个方式,来安装apache2 - utils 。
Linux (CentOS/RHEL):
sudo yum install httpd-tools
macOS:
brew install httpd
Windows: 访问 Apache Lounge (
自https://www.apachelounge.com/download/ 此网址去下载相应版本,解压之后把bin目录添加到PATH之中 。
最简单的压测命令

执⾏,向本地主机8080端⼝运⾏的应⽤程序接⼝测试路径发送,以每批100个,共发送1000次请求,即执⾏ab -n 1000 -c 100 http://localhost:8080/api/test 。
简单使用
我们通过天气公开的接口,测试一下,命令如下:
开启ab测试,设置参数为-n为1000,-c设置为100,请求的目标地址为http://t.weather.itboy.net/api/weather/city/101020100
1000个请求发送了,下面还生成了一些数据总结
当你运行ab后,会看到一份“成绩单”,上面的数据统计,即为压测报告。
关键指标:
进阶用法
模拟POST请求
执行ab,设置请求次数为10,并发数为2,请求文件为req.txt,请求类型为application/json并连接链接http://localhost:8080/api/test 。
保持连接(模拟浏览器行为)
ab,-n,1000,-c,100,-k,http://localhost:8080/api/test,这是相关指令及链接的组合 。