使用 ab 对网站进行压力测试
概述
这是 Apache 自带的一个网站压力测试工具,是 ApacheBench 的缩写,我们可以使用这个工具来对我们的网站进行压力测试。
安装
在 Ubuntu 上要安装下面这个包
1 | sudo apt-get install apache2-utils |
在 CentOS 下是下面这个包
1 | sudo yum install httpd-tools -y |
使用
可以直接输入 ab 来看参数和使用方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | > ab ab: wrong number of arguments Usage: ab [options] [http[s]: // ] hostname [:port] /path Options are: -n requests Number of requests to perform -c concurrency Number of multiple requests to make at a time -t timelimit Seconds to max. to spend on benchmarking This implies -n 50000 -s timeout Seconds to max. wait for each response Default is 30 seconds -b windowsize Size of TCP send /receive buffer, in bytes -B address Address to bind to when making outgoing connections -p postfile File containing data to POST. Remember also to set -T -u putfile File containing data to PUT. Remember also to set -T -T content- type Content- type header to use for POST /PUT data, eg. 'application/x-www-form-urlencoded' Default is 'text/plain' - v verbosity How much troubleshooting info to print -w Print out results in HTML tables -i Use HEAD instead of GET -x attributes String to insert as table attributes -y attributes String to insert as tr attributes -z attributes String to insert as td or th attributes -C attribute Add cookie, eg. 'Apache=1234' . (repeatable) -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: gzip' Inserted after all normal header lines. (repeatable) -A attribute Add Basic WWW Authentication, the attributes are a colon separated username and password. -P attribute Add Basic Proxy Authentication, the attributes are a colon separated username and password. -X proxy:port Proxyserver and port number to use -V Print version number and exit -k Use HTTP KeepAlive feature -d Do not show percentiles served table. -S Do not show confidence estimators and warnings. -q Do not show progress when doing more than 150 requests -l Accept variable document length (use this for dynamic pages) -g filename Output collected data to gnuplot format file . -e filename Output CSV file with percentages served -r Don't exit on socket receive errors. -m method Method name -h Display usage information (this message) -Z ciphersuite Specify SSL /TLS cipher suite (See openssl ciphers) -f protocol Specify SSL /TLS protocol (TLS1, TLS1.1, TLS1.2 or ALL) |
下面介绍一个最常用的使用方法:
1 | ab -c 10 -n 100 http: //www .example.com/ |
上面的意思是模仿 10 个用户对网站进行 1000 次请求。
下面是输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | > ab -c 10 -n 100 http: //www .linux.cn/ This is ApacheBench, Version 2.3 <$Revision: 1706008 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http: //www .zeustech.net/ Licensed to The Apache Software Foundation, http: //www .apache.org/ Benchmarking www.linux.cn (be patient)..... done Server Software: nginx Server Hostname: www.linux.cn Server Port: 80 Document Path: / Document Length: 178 bytes Concurrency Level: 10 Time taken for tests: 0.861 seconds Complete requests: 100 Failed requests: 0 Non-2xx responses: 100 Total transferred: 35800 bytes HTML transferred: 17800 bytes Requests per second: 116.09 #/sec Time per request: 86.142 ms Time per request: 8.614 ms Transfer rate: 40.59 [Kbytes /sec ] received Connection Times (ms) min mean[+ /-sd ] median max Connect: 32 41 7.3 37 53 Processing: 33 42 7.4 38 55 Waiting: 33 42 7.4 38 55 Total: 65 83 14.7 75 108 Percentage of the requests served within a certain time (ms) 50% 75 66% 78 75% 102 80% 103 90% 105 95% 106 98% 107 99% 108 100% 108 (longest request) |
其实最主要看的输出参数是下面这几个:
Server Software 服务器软件
Server Hostname 主机名
Server Port 服务器端口
Time taken for tests 测试时间
Complete requests 完成的请求
Failed requests 失败的请求
Time per request 每次请求的时间
Transfer rate 传输速度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架