On Thu, Jan 7, 2016 at 10:44 AM, Mike Bayer <mba...@redhat.com> wrote: > On 01/07/2016 07:39 AM, Clayton O'Neill wrote: >> On Thu, Jan 7, 2016 at 2:49 AM, Roman Podoliaka <rpodoly...@mirantis.com> >> wrote: >>> In each child process eventlet WSGI server calls accept() in a loop to >>> get a client socket from the kernel and then puts into a greenlet from >>> a pool for processing: >> >> It’s worse than that. What I’ve seen (via strace) is that eventlet actually >> converts socket into a non-blocking socket, then converts that accept() into >> a >> epoll()/accept() pair in every child. Then when a connection comes in, every >> child process wakes up out of poll and races to try to accept on the the >> non-blocking socket, and all but one of them fails. > > is that eventlet-specific or would we see the same thing in gevent ?
I’m not sure. For eventlet it’s a natural consequence of most of this being implemented in Python. It looks like some of this is implemented in C in gevent, so they may handle the situation differently. __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev