[Zope] Another bechmark - 2.0.0a3

michel@digicool.com michel@digicool.com
11 Jul 1999 13:39:40 -0400


Itamar S.-T. <itamars@ibm.net> writes:

> I decided to run torture.pl against Zope 2.0.0a3 using ZServer, with 40
> clients running concurrently.  Notice that the results were faster than Zope
> 1.10.2 on ZopeHTTPServer using only 10 clients, my previous test.  Last time
> however I ran against the "Welcome to Zope" page, while this time I ran
> against a much smaller page (200 bytes.)  So the speed difference may be a
> result of this.  I'll try again tommorow.
> 
> The reason that I didn't run against the Welcome page is that when I run
> Zope2 from ZopeHTTPServer I do get this welcome page, but when I run from
> ZServer (python z2.py) I don't.  What did I do wrong?  Do they store their
> databases in different locations?
> 

ZopeHTTPServer runs Zope in ZODB2 mode (single threaded), for which
there is default content.  The deafult confinguration of ZServer is to
run Zope in ZODB3 mode (concurrent), for which there is no default
content.  Both the concurrency and async socket architecture of
ZServer will blow ZopeHTTPServer out of the water.  Also, there isn't
anything that ZopeHTTPServer can do that ZServer can't do better.
Their both python, can both be called from python scripts, can both be 
used in localhost proxies, and ZServer can run in ZODB2 mode for
backward compatability.

> GET, 1000 chars of garbage in query string
> Transactions:           4000
> Elapsed time:           143.493 sec
> Bytes Transferred:      5431436 bytes
> Response Time:          1.62 sec
> Transaction Rate:       27.88 trans/sec
> Throughput:             37851.53 bytes/sec
> Concurrency:            45.2
> Status Code 200:        3954
> Status Code 500:        46
> 

What kind of hardware was this?  How many threads did you run ZServer with?

> This resulted in lots of:
> 	Server Error: exceptions.KeyError,
> 	uaL: file: /itamar/Zope-2.0.0a3-src/lib/python/ZPublisher/HTTPRequest.py
> line: 246
> errors from ZServer.  Someone should really check this out.

Yes this has happened to me on my amateur benchmarking.  I'm looking
into it.

> 
> I then ran with 0 chars of garbage - simply GET the page 100 times, 40
> clients:
> Transactions:           4000
> Elapsed time:           113.816 sec
> Bytes Transferred:      684000 bytes
> Response Time:          1.10 sec
> Transaction Rate:       35.14 trans/sec
> Throughput:             6009.73 bytes/sec
> Concurrency:            38.7
> Status Code 200:        4000
> 
> I have no idea why so little bytes were transferred, except noting that the
> page I tested was tiny - 200 bytes or so (standard "This is index_html" DTML
> doc.)
> 

Actually smaller pages will probably slow down Zope as opposed larger
ones (up to a limit).  This is the same reason why lots of little
packets will throw certain routers out of their mind.  The overhead
required to return a small static document equals that of the overhead
to return a large one (note the part about 'static', lots of DTML can
easily change this).  Thus there is probably a 'sweet spot' document
size where Zope returns the highest requests per second.

-Michel

> -- 
> Itamar - itamars@ibm.net
> -----------------------------o-------------------------------------o
>  Sealingwax Greeting Cards   | The only good morning is a dead one |
>  http://www.sealingwax.com/  |          --Richard Stallman         |
> 
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://www.zope.org/mailman/listinfo/zope
> 
> (For developer-specific issues, use the companion list,
> zope-dev@zope.org - http://www.zope.org/mailman/listinfo/zope-dev )