[Python-Dev] cpython: Fix closes issue #11109 - socketserver.ForkingMixIn leaves zombies, also fails
Senthil Kumaran
senthil at uthcode.com
Thu May 26 07:10:55 CEST 2011
Antoine Pitrou wrote:
> >> A new method called service_action is made available in BaseServer, called by
> >> serve_forever loop. This useful in cases where Mixins can use it for cleanup
> >> action. ForkingMixin class uses service_action to collect the zombie child
> >> processes. Initial Patch by Justin Wark.
> >
> > Is it reasonable, performance-wise, to do this at every iteration of
> > the loop (that is, at every incoming connection)?
If not here, the call was being done at the process_request level when
creating a new child process and the wait would have been there. I am
not sure, how much performance different (lag) this aggressive
collection can bring.
Charles-François Natali wrote:
> I haven't measured it, but it's O(N) where N is the number of children.
> It should be possible to optimize this by putting all the children in
> a process group (the other advantage is that we wouldn't wait()
> children not spawned by socketserver).
+1. This is definitely a good idea. The change needs to be done in the
collection_children routine which tries to wait for all children to
finish instead of just the ones forked by the socketserver.
Shall raise ticket for this.
--
Senthil
Although the moon is smaller than the earth, it is farther away.
More information about the Python-Dev
mailing list