ApacheBench는 Apache HTTP Server에 포함되어 있습니다.

  • -n : 총 요청 수
  • -c : 동시 요청수 

 

실전을 통해 알아보겠습니다.

1. 테스트에 사용된 test.jsp는 약 10초 수행되는 업무입니다.

-n5 : 총 5개 요청합니다.

$ ./ab -n5 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11209 bytes

Concurrency Level:      1
Time taken for tests:   50.347 seconds
Complete requests:      5
Failed requests:        2
   (Connect: 0, Receive: 0, Length: 2, Exceptions: 0)
Write errors:           0
Total transferred:      56717 bytes
HTML transferred:       56042 bytes
Requests per second:    0.10 [#/sec] (mean)
Time per request:       10069.314 [ms] (mean)
Time per request:       10069.314 [ms] (mean, across all concurrent requests)
Transfer rate:          1.10 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing: 10003 10069 143.5  10007   10326
Waiting:    10003 10068 141.0  10007   10320
Total:      10003 10069 143.5  10007   10326

Percentage of the requests served within a certain time (ms)
  50%  10007
  66%  10007
  75%  10007
  80%  10326
  90%  10326
  95%  10326
  98%  10326
  99%  10326
 100%  10326 (longest request)

 -> 1개씩 5회 (총 5회, 약 50초) 요청됩니다. 

 

-c2, -n5 : 총 5개 요청하는데 동시 요청 수가 2입니다. (2, 2, 1)

$ ./ab -c2 -n5 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11209 bytes

Concurrency Level:      2
Time taken for tests:   30.014 seconds
Complete requests:      5
Failed requests:        3
   (Connect: 0, Receive: 0, Length: 3, Exceptions: 0)
Write errors:           0
Total transferred:      56708 bytes
HTML transferred:       56033 bytes
Requests per second:    0.17 [#/sec] (mean)
Time per request:       12005.446 [ms] (mean)
Time per request:       6002.723 [ms] (mean, across all concurrent requests)
Transfer rate:          1.85 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.1      0       3
Processing: 10003 10005   1.8  10005   10007
Waiting:    10003 10004   0.9  10004   10005
Total:      10003 10005   2.6  10005   10009

Percentage of the requests served within a certain time (ms)
  50%  10004
  66%  10007
  75%  10007
  80%  10009
  90%  10009
  95%  10009
  98%  10009
  99%  10009
 100%  10009 (longest request)

-> 1개씩 10회 (총 10회) 요청됩니다.  

 

이번에는 조금 더 올려보겠습니다.

-n10 : 총 10개 요청합니다.

$ ./ab -n10 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11205 bytes

Concurrency Level:      1
Time taken for tests:   100.030 seconds
Complete requests:      10
Failed requests:        6
   (Connect: 0, Receive: 0, Length: 6, Exceptions: 0)
Write errors:           0
Total transferred:      113424 bytes
HTML transferred:       112074 bytes
Requests per second:    0.10 [#/sec] (mean)
Time per request:       10002.997 [ms] (mean)
Time per request:       10002.997 [ms] (mean, across all concurrent requests)
Transfer rate:          1.11 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing: 10003 10003   0.2  10003   10003
Waiting:    10001 10003   0.5  10003   10003
Total:      10003 10003   0.2  10003   10003

Percentage of the requests served within a certain time (ms)
  50%  10003
  66%  10003
  75%  10003
  80%  10003
  90%  10003
  95%  10003
  98%  10003
  99%  10003
 100%  10003 (longest request)

-> 1개씩 10회 (총 10회, 약 100초) 요청됩니다. 

 

이번에는 총 10개, 동시 2개입니다.

$ ./ab -c2 -n10 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11205 bytes

Concurrency Level:      2
Time taken for tests:   50.018 seconds
Complete requests:      10
Failed requests:        5
   (Connect: 0, Receive: 0, Length: 5, Exceptions: 0)
Write errors:           0
Total transferred:      113421 bytes
HTML transferred:       112071 bytes
Requests per second:    0.20 [#/sec] (mean)
Time per request:       10003.565 [ms] (mean)
Time per request:       5001.782 [ms] (mean, across all concurrent requests)
Transfer rate:          2.21 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0       2
Processing: 10002 10003   1.0  10003   10005
Waiting:    10002 10003   1.0  10003   10005
Total:      10002 10003   1.2  10003   10005

Percentage of the requests served within a certain time (ms)
  50%  10003
  66%  10004
  75%  10004
  80%  10005
  90%  10005
  95%  10005
  98%  10005
  99%  10005
 100%  10005 (longest request)

 -> 2개씩 5회 (총 10회, 약 50초) 요청됩니다.

 

이번에는 총 10개, 동시 3개입니다.

$ ./ab -c3 -n10 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11208 bytes

Concurrency Level:      3
Time taken for tests:   40.017 seconds
Complete requests:      10
Failed requests:        6
   (Connect: 0, Receive: 0, Length: 6, Exceptions: 0)
Write errors:           0
Total transferred:      113424 bytes
HTML transferred:       112074 bytes
Requests per second:    0.25 [#/sec] (mean)
Time per request:       12005.046 [ms] (mean)
Time per request:       4001.682 [ms] (mean, across all concurrent requests)
Transfer rate:          2.77 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.8      0       2
Processing: 10003 10004   1.3  10004   10007
Waiting:    10002 10004   1.6  10004   10007
Total:      10003 10004   1.2  10004   10007

Percentage of the requests served within a certain time (ms)
  50%  10004
  66%  10005
  75%  10005
  80%  10005
  90%  10007
  95%  10007
  98%  10007
  99%  10007
 100%  10007 (longest request)

-> 3회, 3회, 3회, 1회 요청됩니다. (약 40초)

 

이번에는 총 10개, 동시 4개입니다.

$ ./ab -c4 -n10 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11210 bytes

Concurrency Level:      4
Time taken for tests:   30.019 seconds
Complete requests:      10
Failed requests:        9
   (Connect: 0, Receive: 0, Length: 9, Exceptions: 0)
Write errors:           0
Total transferred:      113421 bytes
HTML transferred:       112071 bytes
Requests per second:    0.33 [#/sec] (mean)
Time per request:       12007.434 [ms] (mean)
Time per request:       3001.859 [ms] (mean, across all concurrent requests)
Transfer rate:          3.69 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.3      0       3
Processing: 10004 10005   2.0  10006   10010
Waiting:    10002 10005   2.2  10005   10010
Total:      10004 10006   2.4  10006   10010

Percentage of the requests served within a certain time (ms)
  50%  10006
  66%  10008
  75%  10008
  80%  10008
  90%  10010
  95%  10010
  98%  10010
  99%  10010
 100%  10010 (longest request)

-> 4회, 4회, 2회 요청됩니다. (약 30초)

 

2. 이어지는 테스트에 사용된 test.jsp는 수행시간이 매번 달라지는 업무입니다.

총 20개, 동시 5개.

$ ./ab -c5 -n20 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11450 bytes

Concurrency Level:      5
Time taken for tests:   61.406 seconds
Complete requests:      20
Failed requests:        19
   (Connect: 0, Receive: 0, Length: 19, Exceptions: 0)
Write errors:           0
Total transferred:      224667 bytes
HTML transferred:       221967 bytes
Requests per second:    0.33 [#/sec] (mean)
Time per request:       15351.571 [ms] (mean)
Time per request:       3070.314 [ms] (mean, across all concurrent requests)
Transfer rate:          3.57 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   3.9      0      11
Processing:  7384 13799 3692.4  14003   23003
Waiting:     7383 13798 3692.4  14003   23003
Total:       7392 13801 3691.5  14003   23003

Percentage of the requests served within a certain time (ms)
  50%  14003
  66%  15392
  75%  16003
  80%  17003
  90%  18003
  95%  23003
  98%  23003
  99%  23003
 100%  23003 (longest request)

 

총 40개, 동시 10개.

$ ./ab -c10 -n40 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11355 bytes

Concurrency Level:      10
Time taken for tests:   62.017 seconds
Complete requests:      40
Failed requests:        39
   (Connect: 0, Receive: 0, Length: 39, Exceptions: 0)
Write errors:           0
Total transferred:      443925 bytes
HTML transferred:       438525 bytes
Requests per second:    0.64 [#/sec] (mean)
Time per request:       15504.301 [ms] (mean)
Time per request:       1550.430 [ms] (mean, across all concurrent requests)
Transfer rate:          6.99 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   2.0      0       7
Processing:  8003 14253 3264.0  14003   22003
Waiting:     8003 14252 3263.9  14002   22002
Total:       8003 14254 3264.2  14004   22004

Percentage of the requests served within a certain time (ms)
  50%  14004
  66%  15003
  75%  17003
  80%  18003
  90%  19004
  95%  20006
  98%  22004
  99%  22004
 100%  22004 (longest request)

 

총 100개, 동시 20개.

$ ./ab -c20 -n100 http://127.0.0.1:8000/test.jsp
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).....done

Server Software:        Apache
Server Hostname:        127.0.0.1
Server Port:            8000

Document Path:          /test.jsp
Document Length:        11594 bytes

Concurrency Level:      20
Time taken for tests:   78.256 seconds
Complete requests:      100
Failed requests:        98
   (Connect: 0, Receive: 0, Length: 98, Exceptions: 0)
Write errors:           0
Total transferred:      1117708 bytes
HTML transferred:       1104208 bytes
Requests per second:    1.28 [#/sec] (mean)
Time per request:       15651.295 [ms] (mean)
Time per request:       782.565 [ms] (mean, across all concurrent requests)
Transfer rate:          13.95 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2   4.2      0      14
Processing:  5006 14128 4285.9  14002   23222
Waiting:     5006 14128 4285.8  14002   23222
Total:       5006 14130 4286.1  14002   23235

Percentage of the requests served within a certain time (ms)
  50%  14002
  66%  16003
  75%  17238
  80%  19003
  90%  20003
  95%  22003
  98%  23005
  99%  23235
 100%  23235 (longest request)

 

2. 발생 가능 오류

Benchmarking 127.0.0.1 (be patient)...apr_poll: The timeout specified has expired (70007)
  • 2.4의 경우 -s
  • 2.2의 경우 -t