979ee0
From 6110a949aee9c98ab077c9cd907881ad82be5f45 Mon Sep 17 00:00:00 2001
979ee0
From: Christian Heimes <cheimes@redhat.com>
979ee0
Date: Thu, 14 Jun 2018 17:04:13 +0200
979ee0
Subject: [PATCH] Increase WSGI process count to 5 on 64bit
979ee0
979ee0
Increase the WSGI daemon worker process count from 2 processes to 5
979ee0
processes. This allows IPA RPC to handle more parallel requests. The
979ee0
additional processes increase memory consumption by approximante 250 MB
979ee0
in total.
979ee0
979ee0
Since memory is scarce on 32bit platforms, only 64bit platforms are
979ee0
bumped to 5 workers.
979ee0
979ee0
Fixes: https://pagure.io/freeipa/issue/7587
979ee0
Signed-off-by: Christian Heimes <cheimes@redhat.com>
979ee0
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
979ee0
---
979ee0
 install/conf/ipa.conf               | 2 +-
979ee0
 ipaplatform/base/constants.py       | 5 +++++
979ee0
 ipaserver/install/httpinstance.py   | 1 +
979ee0
 ipaserver/install/server/upgrade.py | 3 ++-
979ee0
 4 files changed, 9 insertions(+), 2 deletions(-)
979ee0
979ee0
diff --git a/install/conf/ipa.conf b/install/conf/ipa.conf
979ee0
index 01bf9a4f97fc0cf197c0ad12743affa597b54911..34ced2ab9d91ae174a42a580e1c4f9436c1a8c3b 100644
979ee0
--- a/install/conf/ipa.conf
979ee0
+++ b/install/conf/ipa.conf
979ee0
@@ -51,7 +51,7 @@ WSGISocketPrefix /run/httpd/wsgi
979ee0
 
979ee0
 
979ee0
 # Configure mod_wsgi handler for /ipa
979ee0
-WSGIDaemonProcess ipa processes=2 threads=1 maximum-requests=500 \
979ee0
+WSGIDaemonProcess ipa processes=$WSGI_PROCESSES threads=1 maximum-requests=500 \
979ee0
  user=ipaapi group=ipaapi display-name=%{GROUP} socket-timeout=2147483647
979ee0
 WSGIImportScript /usr/share/ipa/wsgi.py process-group=ipa application-group=ipa
979ee0
 WSGIScriptAlias /ipa /usr/share/ipa/wsgi.py
979ee0
diff --git a/ipaplatform/base/constants.py b/ipaplatform/base/constants.py
979ee0
index dccb0e7191cb0d9644eb286b9ec061599afa3980..db250d9a40466e852453e7309c704a6897c6bcf8 100644
979ee0
--- a/ipaplatform/base/constants.py
979ee0
+++ b/ipaplatform/base/constants.py
979ee0
@@ -5,9 +5,11 @@
979ee0
 '''
979ee0
 This base platform module exports platform dependant constants.
979ee0
 '''
979ee0
+import sys
979ee0
 
979ee0
 
979ee0
 class BaseConstantsNamespace(object):
979ee0
+    IS_64BITS = sys.maxsize > 2 ** 32
979ee0
     DS_USER = 'dirsrv'
979ee0
     DS_GROUP = 'dirsrv'
979ee0
     HTTPD_USER = "apache"
979ee0
@@ -28,3 +30,6 @@ class BaseConstantsNamespace(object):
979ee0
     # nfsd init variable used to enable kerberized NFS
979ee0
     SECURE_NFS_VAR = "SECURE_NFS"
979ee0
     SSSD_USER = "sssd"
979ee0
+    # WSGIDaemonProcess process count. On 64bit platforms, each process
979ee0
+    # consumes about 110 MB RSS, from which are about 35 MB shared.
979ee0
+    WSGI_PROCESSES = 5 if IS_64BITS else 2
979ee0
diff --git a/ipaserver/install/httpinstance.py b/ipaserver/install/httpinstance.py
979ee0
index e68bfc09b34e087dfb4872b6565b06c6c2188384..7081c7418e76afbd1b4ae28deafefb6b264c62f0 100644
979ee0
--- a/ipaserver/install/httpinstance.py
979ee0
+++ b/ipaserver/install/httpinstance.py
979ee0
@@ -152,6 +152,7 @@ class HTTPInstance(service.Service):
979ee0
             DOMAIN=self.domain,
979ee0
             AUTOREDIR='' if auto_redirect else '#',
979ee0
             CRL_PUBLISH_PATH=paths.PKI_CA_PUBLISH_DIR,
979ee0
+            WSGI_PROCESSES=constants.WSGI_PROCESSES,
979ee0
         )
979ee0
         self.ca_file = ca_file
979ee0
         if ca_is_configured is not None:
979ee0
diff --git a/ipaserver/install/server/upgrade.py b/ipaserver/install/server/upgrade.py
979ee0
index 793092be86da687fd21cf2c0ef3608f32fcf9f16..667b9d214ce76031b5d0f205e03ddb46178e9b2f 100644
979ee0
--- a/ipaserver/install/server/upgrade.py
979ee0
+++ b/ipaserver/install/server/upgrade.py
979ee0
@@ -1615,7 +1615,8 @@ def upgrade_configuration():
979ee0
         AUTOREDIR='' if auto_redirect else '#',
979ee0
         CRL_PUBLISH_PATH=paths.PKI_CA_PUBLISH_DIR,
979ee0
         DOGTAG_PORT=8009,
979ee0
-        CLONE='#'
979ee0
+        CLONE='#',
979ee0
+        WSGI_PROCESSES=constants.WSGI_PROCESSES,
979ee0
     )
979ee0
 
979ee0
     subject_base = find_subject_base()
979ee0
-- 
979ee0
2.17.1
979ee0