[ZODB-Dev] instrumenting a ZEO server?

Chris Withers chris at simplistix.co.uk
Wed Aug 26 09:08:59 EDT 2009


Hi All,

I'm wondering if there's any way to get a ZEO server to log about how 
it's performing?
(eg: how many connections, how many clients are waiting, where they're 
waiting, etc)

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
     asyncore.poll(delay, self._singleton)
   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?

cheers,

Chris

-- 
Simplistix - Content Management, Batch Processing & Python Consulting
            - http://www.simplistix.co.uk


More information about the ZODB-Dev mailing list