zserver blocking behavior with a slow request
On a production Zope (2.7.6) running behind apache and connected to an Oracle database, I'm finding that once a user requests a page which runs a particularly slow sql (say up to 5 minutes), any other subsequent requests seem to take the hit as well, and return very slowly. I have 8 zserver threads and a ZODB pool size of 10. I'm fairly certain I'm not maxing these out. So is this blocking effect just expected behavior for zope? One point of note is that the requests passed from apache all bear the remote ip of 127.0.0.1. Could zserver be throttling the incoming requests due to their identical REMOTE_IP (or some other apache configuration detail)? Is there anything else I should investigate? OH btw, I am using my own connection pool and managing db interface / transactions manually, so ZSQL should not be considered a culprit. Furthermore I'm watching the connections/pool themselves and they are not maxed either. Thanks for any help. Jim
Jim, What platform is this on? and is it a uni or multi-processor system. I did a bit of studying a long time ago into performance of Solaris with python: http://www.zope.org/Members/glpb/solaris not sure how relevant it is now, but if you are running on an old solaris box there might be some hints there. -Matt Jim Abramson wrote:
On a production Zope (2.7.6) running behind apache and connected to an Oracle database, I'm finding that once a user requests a page which runs a particularly slow sql (say up to 5 minutes), any other subsequent requests seem to take the hit as well, and return very slowly.
I have 8 zserver threads and a ZODB pool size of 10. I'm fairly certain I'm not maxing these out. So is this blocking effect just expected behavior for zope? One point of note is that the requests passed from apache all bear the remote ip of 127.0.0.1. Could zserver be throttling the incoming requests due to their identical REMOTE_IP (or some other apache configuration detail)? Is there anything else I should investigate?
-- Matt Hamilton matth@netsight.co.uk Netsight Internet Solutions, Ltd. Business Vision on the Internet http://www.netsight.co.uk +44 (0)117 9090901 Web Design | Zope/Plone Development & Consulting | Co-location | Hosting
I'm finding that once a user requests a page which runs a particularly slow sql (say up to 5 minutes), any other subsequent requests seem to take the hit as well, and return very slowly. Take a look at DadlockDebugger product - you'll see what is happening with your Zope threads.
Isn't it better idea to execute long running query outside of zope - external method or sth, and only check for results even with simple page reload? We did something like this with pdf generation and this worked as expected, but of course you need some additional work to create such thing.
So is this blocking effect just expected behavior for zope? We are using Zope and Oracle too, and even 10 threads... and I didn't noticed something like this. What is your processor doing then? What is the CPU(s?) load.
-- Maciej Wisniowski
Jim Abramson wrote at 2005-8-2 13:07 -0400:
... I have 8 zserver threads and a ZODB pool size of 10. I'm fairly certain I'm not maxing these out. So is this blocking effect just expected behavior for zope?
No, there should be no blocking. Although some colleagues reported similar behaviour with a (non Zope/ZServer) multithreaded application connecting to Oracle. They could not yet find the cause of their problem... -- Dieter
participants (4)
-
Dieter Maurer -
Jim Abramson -
Maciej Wisniowski -
Matt Hamilton