[Zope] Performance Testing / Expections

Ben Leslie benno@sesgroup.net
Sun, 26 Mar 2000 23:27:38 +1000


Ok,

I know it has been asked a couple of times before on the list, but
there hasn't really been any absolute conclusions on the type of
performance to expect from zope and/or how to tweak it for the best
kind of performance.

Over the last two days I have been doing some testing and would like 
to hear on opinions if these results are similar to other peoples.

Firstly the machine specs are:

PIII 450Mhz
128Mb 
IDE Harddrive

Running Debian Potato

Zope is running through Apache with PCGI.

All tests were run using ab.

First I tested apache to see how fast it was as a benchmark.

1000 requests, 25 Concurrent.

/usr/sbin/ab -c 25 -n 1000 "http://www.eminecorp.com.au/docs/testemc.html"

Results:

384 requests per seconds (rps). Avg wait: 54ms. Max Wait. 83ms. Throughput: 20MB/s

1000 requests, 1 at a time.

 /usr/sbin/ab -c 1 -n 1000 "http://www.eminecorp.com.au/docs/testemc.html"

425 rps AvgWait: 2ms MaxWait: 3ms Throughput: 21MB/s

The I tested the same document servered statically through zope. (From zope's root)

/usr/sbin/ab -c 25 -n 100 "http://www.eminecorp.com.au/testemc"

42 rps Avg Wait: 514ms MaxWait: 743ms Throughput: 2MB/s

/usr/sbin/ab -c 1 -n 100 "http://www.eminecorp.com.au/testemc"

45 rps AvgWait: 21ms MaxWait: 29ms Throughput 2.3MB/s

Next on line was a moderately dynamic page. Dtml only, no DB or Ext. Methods.

/usr/sbin/ab -c 25 -n 100 "http://www.eminecorp.com.au/eminecorp/ecom2/sesgroup?cu
rrentid=0&cur_page=http%3a//www.eminecorp.com.au/eminecorp/ecom2/siteinfo/index_html?"

4.97 rps AvWait: 4.4s MaxWait: 5.6s Throughput 21kb/s

/usr/sbin/ab -c 1 -n 100 "http://www.eminecorp.com.au/eminecorp/
ecom2/sesgroup?currentid=0&cur_page=http%3a//www.eminecorp.com.au/eminecorp/ecom2/
siteinfo/index_html?"

5.09 rps AvWait: 195ms MaxWait: 198ms Throughput 22kb/s

Then finally testing a page with the same amount of DTML complexity but
some external methods which call a database using pygresql

/usr/sbin/ab -c 25 -n 100 "http://www.eminecorp.com.au/eminecorp/ecom2/products/?s
tartitem=1&currentid=22"

1.3rps  Avwait 16s  MaxWait 20s Throughput 19.51 kb/s

/usr/sbin/ab -c 1 -n 100 "http://www.eminecorp.com.au/eminecorp/ecom2/products/?s
tartitem=1&currentid=22"

1.3rps Avwait 768s MacWait 789 Throughput 19.55 kb/s

In summary serving straight of apache is very fast, and doesn't suffer if 
multiple people access the site at once.

Static Zope (which you wouldn't really do anyway) was acceptable speed and
didn't really suffer too badly if there were multiple accesses.

Dynamic Zope was fair in speed, but proably still fast enough, at least for
my site anyway. It started to suffer in a bad way with multiple accesses, 
up to 5 sec response time.

Highly dynamic Zope was very bad in rps and hopeless more multiple access.

Now I have only been in this game I a while so I don't know how critical 
the multiple access thing is going to be. I am expecting at most 1000 
visitors each day (say a 10 hour period). So 100 visitor each hour shouldn't
cuase me any problems at the moment.

I guess how I would like to know if anyone out there knows how to improve 
this performance at all. Can I throw memory and processors at it and make
it go away? Obviously there are some things in the highly dynamic bit
which I will need to speed up, however how can I make just normal
dtml execute faster? The prospect of ZEO has certainly helped in this
area but surely I must be able to sqeeze some more performance out of this
machine.

Thanks in advance.

Benno