apache benchmark(ab)是一种常见的压测工具,不仅可以对apache进行压测,也可以对nginx,tomcat,IIS等进行压测
安装
如果安装了apache,那么ab已经自带了,不需要再额外安装,如果没有安装apache,可以通过以下方式安装
# ubuntu
sudo apt-get install apache2-util
# centos
yum -y install httpd-tools
压测
在压测前,需要关注几个选项,通过ab --help
查看
-n requests 要执行的请求次数
-c concurrency 并发数量
-s timeout 响应时间
#### 执行
执行以下代码进行压测
ab -n 1000 -c 100 -s 1 http://127.0.0.1:1080/index
# 一共1000个请求,并发100,超时时间为1s,后面为测试的url
测试结果
apr_pollset_poll: The timeout specified has expired (70007)
Total of 997 requests completed
显示有997个请求完成了,而且报错了,说明有请求超过1s,所以把超时时间去掉重新测试
ab -n 1000 -c 100 http://127.0.0.1:1080/index
结果
Server Software: nginx/x.x.x
Server Hostname: www.my.com
Server Port: 80
Document Path: /
Document Length: 2368 bytes
Concurrency Level: 100
Time taken for tests: 30.914 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 2527000 bytes
HTML transferred: 2368000 bytes
Requests per second: 32.35 [#/sec] (mean)
Time per request: 3091.393 [ms] (mean)
Time per request: 30.914 [ms] (mean, across all concurrent requests)
Transfer rate: 79.83 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 174 381.6 0 2006
Processing: 1 2391 6166.6 205 25853
Waiting: 1 2080 5941.6 205 25853
Total: 2 2565 6143.6 406 26609
Percentage of the requests served within a certain time (ms)
50% 406
66% 1004
75% 1413
80% 1616
90% 6448
95% 25760
98% 25824
99% 25855
100% 26609 (longest request)
这里我们需要关注以下几个数据
1)Failed requests:失败的请求
2)Requests per second:也就是常说的QPS, 每秒查询率,这是一个平均值
3)Time per request:完成一个请求所花费的时间
4)Transfer rate: 网络传输速度。 对于大文件的请求测试,这个值很容易成为系统瓶颈所在 要确定该值是不是瓶颈,需要了解客户端和被测服务器之间的网络情况,包括网络带宽和网卡速度等信息。