Le 20/04/2012 16:06, Claudiu Saftoiu a écrit :

    Ah, so it seems that, as I leave the server running longer & longer,
    more & more threads are taken up with a `.recv()` call. I think one of
    my clients opens requests and does not read them/close them.
    Eventually
    all the threads are blocking in that fashion.

    I will fix my clients. But, is there a server-side fix to this
    (again, using Repoze.BFG)?
    Something to time out the connection after 60 seconds or so if
    nothing has happened?


Additional info: in particular the blocked threads' stack dumps look like this:

Thread 140605868680960:
  ---------- [snip]----------
File "/home/tsa/env/lib/python2.6/site-packages/paste/httpserver.py", line 474, in read
    data = self.file.read(length)
  File "/usr/lib/python2.6/socket.py", line 377, in read
    data = self._sock.recv(left)

Was my assessment of the situation accurate?

I would say so, and it seems that what makes the thread hang on is that the socket is not closed by your clients. (otherwise recv would exit with an exception).

Alex
_______________________________________________
For more information about ZODB, see http://zodb.org/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org
https://mail.zope.org/mailman/listinfo/zodb-dev

Reply via email to