| From f9d883b97b24efaf82e510601a4711bc9c0ea9c7 Mon Sep 17 00:00:00 2001 |
| From: Christian Heimes <cheimes@redhat.com> |
| Date: Thu, 14 Jun 2018 17:04:13 +0200 |
| Subject: [PATCH] Increase WSGI process count to 5 on 64bit |
| |
| Increase the WSGI daemon worker process count from 2 processes to 5 |
| processes. This allows IPA RPC to handle more parallel requests. The |
| additional processes increase memory consumption by approximante 250 MB |
| in total. |
| |
| Since memory is scarce on 32bit platforms, only 64bit platforms are |
| bumped to 5 workers. |
| |
| Fixes: https://pagure.io/freeipa/issue/7587 |
| Signed-off-by: Christian Heimes <cheimes@redhat.com> |
| Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com> |
| |
| install/conf/ipa.conf | 2 +- |
| ipaplatform/base/constants.py | 5 +++++ |
| ipaserver/install/httpinstance.py | 1 + |
| ipaserver/install/server/upgrade.py | 3 ++- |
| 4 files changed, 9 insertions(+), 2 deletions(-) |
| |
| diff --git a/install/conf/ipa.conf b/install/conf/ipa.conf |
| index 696e5aab1aca1875eb711b91351f41987a8379d1..912a63c2240e0681dfbeeac223a902b15b304716 100644 |
| |
| |
| @@ -47,7 +47,7 @@ WSGISocketPrefix /run/httpd/wsgi |
| |
| |
| # Configure mod_wsgi handler for /ipa |
| -WSGIDaemonProcess ipa processes=2 threads=1 maximum-requests=500 \ |
| +WSGIDaemonProcess ipa processes=$WSGI_PROCESSES threads=1 maximum-requests=500 \ |
| user=ipaapi group=ipaapi display-name=%{GROUP} socket-timeout=2147483647 \ |
| lang=C.UTF-8 locale=C.UTF-8 |
| WSGIImportScript /usr/share/ipa/wsgi.py process-group=ipa application-group=ipa |
| diff --git a/ipaplatform/base/constants.py b/ipaplatform/base/constants.py |
| index ca4a12ec017e81b32dc796062608a96ce65a0235..075a3ba774e1286e50258b464bd7687d484f6029 100644 |
| |
| |
| @@ -5,9 +5,11 @@ |
| ''' |
| This base platform module exports platform dependant constants. |
| ''' |
| +import sys |
| |
| |
| class BaseConstantsNamespace(object): |
| + IS_64BITS = sys.maxsize > 2 ** 32 |
| DS_USER = 'dirsrv' |
| DS_GROUP = 'dirsrv' |
| HTTPD_USER = "apache" |
| @@ -42,6 +44,9 @@ class BaseConstantsNamespace(object): |
| # WSGI module override, only used on Fedora |
| MOD_WSGI_PYTHON2 = None |
| MOD_WSGI_PYTHON3 = None |
| + # WSGIDaemonProcess process count. On 64bit platforms, each process |
| + # consumes about 110 MB RSS, from which are about 35 MB shared. |
| + WSGI_PROCESSES = 5 if IS_64BITS else 2 |
| |
| |
| constants = BaseConstantsNamespace() |
| diff --git a/ipaserver/install/httpinstance.py b/ipaserver/install/httpinstance.py |
| index 231bffa2c6ec1fd124738649912e4bd958e802b7..3764870ee77f2ba0da18ec004664e6f66c13bba1 100644 |
| |
| |
| @@ -148,6 +148,7 @@ class HTTPInstance(service.Service): |
| DOMAIN=self.domain, |
| AUTOREDIR='' if auto_redirect else '#', |
| CRL_PUBLISH_PATH=paths.PKI_CA_PUBLISH_DIR, |
| + WSGI_PROCESSES=constants.WSGI_PROCESSES, |
| ) |
| self.ca_file = ca_file |
| if ca_is_configured is not None: |
| diff --git a/ipaserver/install/server/upgrade.py b/ipaserver/install/server/upgrade.py |
| index ab09b98406df251f769c4747c9250075ab610362..ee3cedd78a2f45f33665bf562e9426cf68325544 100644 |
| |
| |
| @@ -1681,7 +1681,8 @@ def upgrade_configuration(): |
| AUTOREDIR='' if auto_redirect else '#', |
| CRL_PUBLISH_PATH=paths.PKI_CA_PUBLISH_DIR, |
| DOGTAG_PORT=8009, |
| - CLONE='#' |
| + CLONE='#', |
| + WSGI_PROCESSES=constants.WSGI_PROCESSES, |
| ) |
| |
| subject_base = find_subject_base() |
| -- |
| 2.14.4 |
| |