HTTP接口的压力测试和性能测试工具Apache Bench

在项目开发完成,需要对系统整体做一个压测,以满足客户上线前的性能要求,什么打开页面不能超过2秒,复杂业务执行不能超过5秒等等。Jmeter工具大家都耳熟能详,今天就来介绍一个轻量级的压测工具Apache Bench,也是常常说的ab。记得n年前,有客户问到系统使用ab压测过了吗?当时还不知道ab这个简称指的是啥

HTTP接口的压力测试和性能测试工具Apache Bench

为什么需要压测

想象一下:你精心设计的API,以为能扛住千人并发,结果上线后秒变”慢动作回放”。这时候,你最需要的是什么?不是”可能”,不是”感觉”,也不是在我本地访问很快之类的话术,而是真实数据!ab工具就是那个能给你”真知灼见”的工具。它小巧玲珑,却能发挥巨大作用,主要用于评估Web服务器在不同负载情况下的性能表现(如服务器的响应时间、吞吐量等)。无论是开发新应用,还是优化现有网站,ab都能为你提供关键数据支持,帮你全面了解服务器的”抗压能力”。ab有以下优势:

  • 简单到:无需复杂配置,一条命令搞定
  • 精准:提供准确的响应时间、吞吐量数据
  • 真实:模拟真实用户并发访问
  • 免费:Apache官方出品,开箱即用

ab的安装

安装(超简单)

Linux (Debian/Ubuntu):

sudo apt-get install apache2-utils

Linux (CentOS/RHEL):

sudo yum install httpd-tools

macOS:

brew install httpd

Windows: 访问 Apache Lounge (
https://www.apachelounge.com/download/)下载对应版本,解压后将bin目录加入PATH

HTTP接口的压力测试和性能测试工具Apache Bench

最简单的压测命令

ab -n 1000 -c 100 http://localhost:8080/api/test
  • -n 1000:总共发送1000个请求
  • -c 100:同时模拟100个用户并发
  • http://localhost:8080/api/test:要测试的API地址

简单使用

我们通过天气公开的接口,测试一下,命令如下:

ab  -n 1000 -c 100 http://t.weather.itboy.net/api/weather/city/101020100

HTTP接口的压力测试和性能测试工具Apache Bench

1000个请求发送了,下面还生成了一些数据总结

HTTP接口的压力测试和性能测试工具Apache Bench

上面的数据统计,就是压测报告,当你运行ab后,就会看到上面那样一份”成绩单”。

关键指标:

  • Requests per second (RPS):每秒处理请求数,数字越大越好!54.92表明每秒处理54个请求
  • Time per request:单个请求平均耗时(服务器视角),1820毫秒
  • Time per request (mean,across all concurrent requests):用户实际感受到的等待时间,18毫秒(这才是你关心的!)
  • Failed requests:失败请求数,0表明一切正常

进阶用法

模拟POST请求

ab -n 10 -c 2 -p req.txt -T 'application/json' http://localhost:8080/api/test
  • -p req.txt:发送的请求体文件
  • -T ‘application/json’:设置Content-Type

保持连接(模拟浏览器行为)

ab -n 1000 -c 100 -k http://localhost:8080/api/test
  • -k:启用HTTP Keep-Alive,复用连接,大幅提升RPS

模拟登录状态

ab -n 1000 -c 100 -C "sessionid=12345" http://localhost:8080/api/test
  • -C “sessionid=12345″:添加Cookie,模拟已登录用户

ab参数速查表

参数

说明

实用场景

-n

总请求数

设定测试总量

-c

并发数

模拟用户数

-k

启用Keep-Alive

模拟真实浏览器行为

-p

POST数据文件

测试API接口

-T

Content-Type

设置请求头

-C

Cookie

模拟已登录状态

-v

详细程度

1-4级,越高越详细

-w

HTML格式输出

生成美观的报告

官方说明文档地址为
https://httpd.apache.org/docs/2.4/programs/ab.html

HTTP接口的压力测试和性能测试工具Apache Bench

全部参数如下:

ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -E client-certificate file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x <table>-attributes ] [ -X proxy[:port] ] [ -y <tr>-attributes ] [ -z <td>-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path
© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
微风的头像 - 鹿快
评论 共3条

请登录后发表评论