在项目开发完成,需要对系统整体做一个压测,以满足客户上线前的性能要求,什么打开页面不能超过2秒,复杂业务执行不能超过5秒等等。Jmeter工具大家都耳熟能详,今天就来介绍一个轻量级的压测工具Apache Bench,也是经常说的ab。记得n年前,有客户问到系统使用ab压测过了吗?当时还不知道ab这个简称指的是啥[捂脸]。
想象一下:你精心设计的API,以为能扛住千人并发,结果上线后秒变"慢动作回放"。这时候,你最需要的是什么?不是"可能",不是"感觉",也不是在我本地访问很快之类的话术,而是真实数据!ab工具就是那个能给你"真知灼见"的工具。它小巧玲珑,却能发挥巨大作用,主要用于评估Web服务器在不同负载情况下的性能表现(如服务器的响应时间、吞吐量等)。无论是开发新应用,还是优化现有网站,ab都能为你提供关键数据支持,帮你全面了解服务器的"抗压能力"。ab有以下优势:
简单到:无需复杂配置,一条命令搞定精准:提供精确的响应时间、吞吐量数据真实:模拟真实用户并发访问免费:Apache官方出品,开箱即用ab的安装安装(超简单)
Linux (Debian/Ubuntu):
sudo apt-get install apache2-utilsLinux (CentOS/RHEL):
sudo yum install httpd-toolsmacOS:
brew install httpdWindows: 访问 Apache Lounge (https://www.apachelounge.com/download/)下载对应版本,解压后将bin目录加入PATH
最简单的压测命令
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/1010201001000个请求发送了,下面还生成了一些数据总结
上面的数据统计,就是压测报告,当你运行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
全部参数如下:
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转载请注明来自海坡下载,本文标题:《如何评估一个网站的服务器性能(HTTP接口的压力测试和性能测试工具Apache Bench)》
京公网安备11000000000001号
京ICP备11000001号
还没有评论,来说两句吧...