[Zope] Advice for performance checking/tuning

Dieter Maurer dieter@handshake.de
Fri, 26 Apr 2002 22:05:50 +0200


Hannu Krosing writes:
 > We are investigating use of Zope for a portal that will have 
 > about ~500.000 users.
 > 
 > However our test shows that zope is only capable of delivering 
 > about 4 request/sec of medium complexity page on dual PIII 833 
 > which seems way too low.
 > 
 > We did our tests to straight Zope 2.3.4 (no apache or squid in 
 > front of it). Even when told to use 10 thread only 4 were active
 > in top (others were there but were idle) and load average was 
 > never over 30%.
Python's thread support is quite weak.

  Python alone is unable to use a multi-processor architecture
  due to the global interpreter lock, which prevents two Python
  threads to run in parallel.

Use several Zope clients served by a single ZEO as storage server.

But there seems to be something strange in addition. You
should be able to achieve a 50 % load and up to seven threads
active (that's the default limit for ZODB connections, which can
be changed in the code). Are you sure, you feed enough concurrent
requests to Zope?

You can play with the "-i" Zope startup parameter. It controls
how often thread switches are allowed and may help to get
more threads used.

 > Where do I find some docs on what makes zope extremely slow (I 
 > have found that <dtml-if xxx> where xxx is missing or overly 
 > complex authorization schemes can do it, but what else) ?
Consider upgrading to Zope 2.5.1.

   Permission checking has been moved from Python into C.
   This can significantly speed up Zope.


Dieter