[Zope] threading, dtml and performance
Oliver Bleutgen
myzope@gmx.net
Mon, 25 Feb 2002 20:13:03 +0100
Tony McDonald wrote:
> A lurker surfaces....
> [big snip]
> But now things get interesting. If you use 'ab' on the following External
> Method
>
> import time
>
> def sleep(self):
> time.sleep(5)
>
> You find this as you increase the concurrency (this is on a server with 4
> threads running)
>
> % ab -c1 http://host/sleep
> Time taken for tests: 5.030 seconds
> % ab -c2 http://host/sleep
> Time taken for tests: 5.034 seconds
> % ab -c3 http://host/sleep
> Time taken for tests: 5.034 seconds
> % ab -c4 http://host/sleep
> Time taken for tests: 5.040 seconds
> % ab -c5 http://host/sleep
> Time taken for tests: 5.050 seconds
> % ab -c6 http://host/sleep
> Time taken for tests: 5.038 seconds
>
> ?? The last two tests imply that there's more than one thread running, but
> wait - look at the access_log from the server
>
> host - - [25/Feb/2002:13:53:13 +0000] "GET /sleep HTTP/1.0" 200 45
> host - - [25/Feb/2002:13:53:13 +0000] "GET /sleep HTTP/1.0" 200 45
> host - - [25/Feb/2002:13:53:13 +0000] "GET /sleep HTTP/1.0" 200 44
> host - - [25/Feb/2002:13:53:13 +0000] "GET /sleep HTTP/1.0" 200 45
> host - - [25/Feb/2002:13:53:18 +0000] "GET /sleep HTTP/1.0" 200 45
> host - - [25/Feb/2002:13:53:18 +0000] "GET /sleep HTTP/1.0" 200 45
>
> The first four threads are kicked off, then two more (after 5 seconds).
> Apache bench returns after the first four threads have run - I have no idea
> why this is.
try ab -c 7 -n 7 URI
ab will return after it has recieved the number of requests specified
with -n, default is 1. It will also only do the statistics about the
number of requests you configured, i.e. one in your case. You should
redo the tests.
FWIW, I did this test on a linux box, here's the result (with zope's
standart 4 threads)
> ab -c 20 -n 20 http://localhost:30080/sleep
This is ApacheBench, Version 1.3c <$Revision: 1.38 $> apache-1.3
Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/
Server Software: Zope/Zope
Server Hostname: localhost
Server Port: 30080
Document Path: /sleep
Document Length: 0 bytes
Concurrency Level: 20
Time taken for tests: 25.085 seconds
Complete requests: 20
Failed requests: 0
Total transferred: 3600 bytes
HTML transferred: 0 bytes
Requests per second: 0.80
Transfer rate: 0.14 kb/s received
Connnection Times (ms)
min avg max
Connect: 31 64 78
Processing: 5023 14997 24997
Total: 5054 15061 25075
I get what one would expect.
Btw. zope logs at the end of the transaction (more or less),
at least not at the beginning.
cheers,
oliver