Increase the number of possible child processes

The mirrorlist-server is the process which has the mirrorlist data
loaded and which is accessed by the public facing
mirrorlist_client.wsgi. The mirrorlist-server uses the
ForkingUnixStreamServer which has a default of max_children = 40.
(https://hg.python.org/cpython/file/2.7/Lib/SocketServer.py#l516)

Looking at the code of ForkingUnixStreamServer it says at

https://hg.python.org/cpython/file/2.7/Lib/SocketServer.py#l523

  # If we're above the max number of children, wait and reap them until
  # we go back below threshold. Note that we use waitpid(-1) below to be
  # able to collect children in size(<defunct children>) syscalls instead
  # of size(<children>): the downside is that this might reap children
  # which we didn't spawn, which is why we only resort to this when we're
  # above max_children.

As we are running the wsgi with processes=45 this sounds like it can
lead to situation where it might just hang.

This increases max_children to 80 and processes to 60.

Signed-off-by: Adrian Reber <adrian@lisas.de>
This commit is contained in:
Adrian Reber 2015-10-15 14:03:02 +00:00
parent d04588274a
commit 6722cab410
4 changed files with 12 additions and 2 deletions

View file

@ -938,6 +938,7 @@ def sigterm_handler(signum, frame):
class ForkingUnixStreamServer(ForkingMixIn, UnixStreamServer):
request_queue_size = 300
max_children = 80
def finish_request(self, request, client_address):
signal.signal(signal.SIGHUP, signal.SIG_IGN)
BaseServer.finish_request(self, request, client_address)