Hi
I heighten everybody's mood I'll post some positive news.
After some optimizations in both Seaside and AJP I managed to break 8000
requests / sec with a single Pharo 1.3 image. Thanks to SystemProfiler I
knew where to look.
This is with a single request handler that just returns a two byte
response. It doesn't involve any rendering, sessions, continuations or
whatsoever but it kicks on the full Seaside request handling machinery
with a request context and everything.
I'm using WASmallRequestHandler from the Seaside-Benchmark package.
WASmallRequestHandler >> #handleFiltered: aRequestContext
aRequestContext respond: [ :response |
response
binary;
contentType: WAMimeType textHtml;
nextPutAll: 'OK' asByteArray ]
Apache 2.2.21 mpm_worker mod_proxy_ajp
CPU Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz
SmalltalkImage current vmVersion 'Croquet Closure Cog VM [CoInterpreter
VMMaker.oscog-eem.138]'
Attached you'll find the output of ApacheBench.
Cheers
Philippe
ab -c 10 -k -n 100000 http://127.0.0.1:80/small
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 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests
Server Software:
Server Hostname: 127.0.0.1
Server Port: 80
Document Path: /small
Document Length: 2 bytes
Concurrency Level: 10
Time taken for tests: 12.366 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 99015
Total transferred: 15755682 bytes
HTML transferred: 200000 bytes
Requests per second: 8086.54 [#/sec] (mean)
Time per request: 1.237 [ms] (mean)
Time per request: 0.124 [ms] (mean, across all concurrent requests)
Transfer rate: 1244.23 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 0 1 0.6 1 15
Waiting: 0 1 0.6 1 15
Total: 0 1 0.6 1 15
Percentage of the requests served within a certain time (ms)
50% 1
66% 1
75% 1
80% 1
90% 2
95% 2
98% 3
99% 3
100% 15 (longest request)