压力测试工具ab

时间:2021-11-14 11:45:31

在 Apache 有个叫 ab(ApacheBench) 的程序, 此程序是专门用在做压力测试用的软件. ApacheBench(ab) 用来测试 apache 执行效率,可以用来测试网站的压力工具.

ab 参数:

Usage: /usr/sbin/ab [options] [http[s]://]hostname[:port]/path

Options are:

§ -n requests Number of requests to perform

§ -c concurrency Number of multiple requests to make

§ -t timelimit Seconds to max. wait for responses

§ -p postfile File containg data to POST

§ -T content-type Content-type header for POSTing

§ -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: zop'

§ 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.

§ -g filename Output collected data to gnuplot format file.

§ -e filename Output CSV file with percentages served

§ -s Use httpS instead of HTTP (SSL)

§ -h Display usage information (this message)

ab 使用

ab使用范例:
要执行 1000 次的 connection, 20 次的 concurrent (并行, 同时):

语法: ab -n 1000 -c 20 http://localhost/

产生出来的结果. 要注意的是以下几个:

§ Time taken for tests: 总共执行花了多久的时间.(以上 1000 次共多久)

§ Requests per second: 每秒平均可以处理多少个 connection.

/* 一个测试实例 */
ab -n 50000 -c 200 http://127.0.0.1:21108/hpc_batch_insert
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests


Server Software: nginx/1.4.7
Server Hostname: 127.0.0.1
Server Port: 21108

Document Path: /hpc_batch_insert
Document Length: 192 bytes

Concurrency Level: 200
Time taken for tests: 2.541 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Non-2xx responses: 50041
Total transferred: 17664473 bytes
HTML transferred: 9607872 bytes
Requests per second: 19675.38 [#/sec] (mean)
Time per request: 10.165 [ms] (mean)
Time per request: 0.051 [ms] (mean, across all concurrent requests)
Transfer rate: 6788.19 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 4 0.7 4 7
Processing: 2 6 1.6 6 20
Waiting: 1 5 1.7 5 20
Total: 5 10 1.5 10 21

Percentage of the requests served within a certain time (ms)
50% 10
66% 10
75% 11
80% 11
90% 11
95% 12
98% 14
99% 16
100% 21 (longest request)