On Tue, 23 Apr 2002, Aaron Bannert wrote:
> This patch corrects some problems in the ability of AB to handle
> concurrent processing by:
> - enabling nonblocking connect()s.
> - preventing APR from performing blocking reads, allowing AB to
> multiplex over its own set of descriptors.
> ** If you saw poor concurrent performance with the worker MPM while
> testing with AB, please retest and submit your results.
May I just say HELL YEAH! :) That's awesome. Attached are some runs I
just did before and after applying your patch to ab (nothing else
changed... I didn't even stop and restart httpd between runs). Included
are a few dumps from mod_status during each ab run.
Summary for a concurrency level of 100, default worker params:
Without patch With patch
RPS 60.69 1372.75
KBPS 103.72 2345.90
In other words:
++1 on the patch =-)
--Cliff
---------------------------------------------------------------
With original ab:
----------------------
_________________________.......................................
CCCCCCCCCCCCCCCCCCCCCCCCC.......................................
_____W___________________.......................................
................................................................
_________________________.......................................
CCCCCCCCCCCCCCCCCCCCCCCCC.......................................
_________________________.......................................
___CCC_C__C_C___CCC_____C.......................................
W________________________.......................................
_________________________.......................................
................................................................
_______________________W_.......................................
CCCCCCCCCCCCCCCCCCCCCCCCC.......................................
_________________________.......................................
................................................................
Server Hostname: localhost
Server Port: 80
Document Path: /index.html.en
Document Length: 1456 bytes
Concurrency Level: 100
Time taken for tests: 164.758753 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 17500000 bytes
HTML transferred: 14560000 bytes
Requests per second: 60.69 [#/sec] (mean)
Time per request: 1.648 [ms] (mean)
Time per request: 0.016 [ms] (mean, across all concurrent requests)
Transfer rate: 103.72 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 19
Processing: 8 1646 2325.9 69 8041
Waiting: 1 904 1389.4 37 6028
Total: 8 1646 2325.9 69 8041
Percentage of the requests served within a certain time (ms)
50% 69
66% 2017
75% 4013
80% 4029
90% 5990
95% 6006
98% 6019
99% 7940
100% 8041 (longest request)
---------------------------------------------------------------
With patched ab:
----------------------
CC____C_CC_____C_C____CC_.......................................
______CCCC_C__C__CCW___C_.......................................
_C___C____C_CCCC_C___C___.......................................
CCCCCCCCCCC.....................................................
CCCCCCCCCCC.....................................................
C__CCC__C____C_C___C_C___.......................................
_C___CC_CCCCC_CC_CCCCCC_C.......................................
_CC_CC_CCC_CC_CCC_CC_CC_C.......................................
__CCCC_CCC_C_C__C_C_CCCCC.......................................
CCC____CCCC__CCCCCCCC__CC.......................................
CCC_CCCCCC_CC__C__C_CCCC_.......................................
CCC___CCC___CCC_CCC_CCCWC.......................................
Server Hostname: localhost
Server Port: 80
Document Path: /index.html.en
Document Length: 1456 bytes
Concurrency Level: 100
Time taken for tests: 7.284637 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 17500000 bytes
HTML transferred: 14560000 bytes
Requests per second: 1372.75 [#/sec] (mean)
Time per request: 0.073 [ms] (mean)
Time per request: 0.001 [ms] (mean, across all concurrent requests)
Transfer rate: 2345.90 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 13
Processing: 8 71 86.2 72 1433
Waiting: 1 39 86.2 34 1420
Total: 8 71 86.2 72 1433
Percentage of the requests served within a certain time (ms)
50% 72
66% 72
75% 72
80% 73
90% 73
95% 75
98% 99
99% 215
100% 1433 (longest request)