Advice for performance checking/tuning
Hi 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%. Where/what should I start investigating ? 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) ? -------------- Hannu
On Wed, 24 Apr 2002 17:41, Hannu Krosing wrote:
We are investigating use of Zope for a portal that will have about ~500.000 users.
How many concurrently?
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%.
Where/what should I start investigating ?
Try using the CallProfiler product from zope.org to find out what your requests are doing - and where they're slow. Then optimise those sections of code. If you can, use caching to remove whole slabs of the call tree. Richard
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
participants (3)
-
Dieter Maurer -
Hannu Krosing -
Richard Jones