I'm wondering if there's any way to get a ZEO server to log about how
(eg: how many connections, how many clients are waiting, where they're
I'm trying to debug a problem where app servers are being dropped out of
a load balancer pool for being unresponsive, and I think they're waiting
on the ZEO server so I'm trying to get some stats on the ZEO server side
as to what's going on...
As far as the clients go, DeadlockDebugger is providing some insights:
File "/opt/Zope-2.9/lib/python/ZEO/ClientStorage.py", line 749, in loadEx
self._lock.acquire() # for atomic processing of invalidations
I assume this is the client waiting for the storage server's lock?
Is this the ZEO server's single threadedness or is this a lock between
threads on the app server?
File "/opt/Zope-2.9/lib/python/ZEO/ClientStorage.py", line 769, in loadEx
data, tid, ver = self._server.loadEx(oid, version)
File "/opt/Zope-2.9/lib/python/ZEO/ServerStub.py", line 192, in loadEx
return self.rpc.call("loadEx", oid, version)
File "/opt/Zope-2.9/lib/python/ZEO/zrpc/connection.py", line 531, in call
r_flags, r_args = self.wait(msgid)
File "/opt/Zope-2.9/lib/python/ZEO/zrpc/connection.py", line 638, in wait
File "/usr/local/lib/python2.4/asyncore.py", line 122, in poll
r, w, e = select.select(r, w, e, timeout)
What does this mean? I'm guessing it's the actual transfer of data from
the storage server to the app server, right?
Simplistix - Content Management, Batch Processing & Python Consulting
For more information about ZODB, see the ZODB Wiki:
ZODB-Dev mailing list - ZODB-Dev@zope.org