diff --git a/apache/files/RedHat/conf.modules.d/00-mpm.conf.jinja b/apache/files/RedHat/conf.modules.d/00-mpm.conf.jinja new file mode 100644 index 0000000..8831d12 --- /dev/null +++ b/apache/files/RedHat/conf.modules.d/00-mpm.conf.jinja @@ -0,0 +1,51 @@ +# managed by saltstack + +{% set mpm_module = 'mpm_prefork' -%} +{% set mpm_param = salt['pillar.get']('apache:mod_mpm_prefork', {}) -%} +{% if pillar.get('apache:mod_mpm_worker') is defined -%} +{% set mpm_module = 'mpm_worker' -%} +{% set mpm_param = salt['pillar.get']('apache:mod_mpm_worker', {}) -%} +{% else -%} +{% endif -%} + +LoadModule {{ mpm_module }}_module modules/mod_{{ mpm_module }}.so + +# prefork MPM +# StartServers: number of server processes to start +# MinSpareServers: minimum number of server processes which are kept spare +# ServerLimit: maximum number of server processes +# MaxSpareServers: maximum number of server processes which are kept spare +# MaxRequestWorkers: maximum number of server processes allowed to start +# MaxConnectionsPerChild: maximum number of requests a server process serves + + + StartServers {{ mpm_param['start_servers'] | d('5') }} + MaxRequestWorkers {{ mpm_param['max_request_workers'] | d('150') }} +{%- if mpm_param['max_request_workers'] | d('150') >= 256 %} + ServerLimit {{ mpm_param['max_request_workers'] | d('150') }} +{%- endif %} + MinSpareServers {{ mpm_param['min_spare_servers'] | d('5') }} + MaxSpareServers {{ mpm_param['max_spare_servers'] | d('10') }} + MaxConnectionsPerChild {{ mpm_param['max_connections_per_child'] | d('0') }} + + +# worker MPM +# StartServers: initial number of server processes to start +# MinSpareThreads: minimum number of worker threads which are kept spare +# MaxSpareThreads: maximum number of worker threads which are kept spare +# ThreadsPerChild: constant number of worker threads in each server process +# MaxRequestWorkers: maximum number of worker threads +# MaxConnectionsPerChild: maximum number of connections a server process serves +# before terminating + + + StartServers {{ mpm_param['start_servers'] | d('2') }} + MaxRequestWorkers {{ mpm_param['max_request_workers'] | d('150') }} + MinSpareThreads {{ mpm_param['min_spare_threads'] | d('25') }} + MaxSpareThreads {{ mpm_param['max_spare_threads'] | d('75') }} + ThreadLimit {{ mpm_param['thread_limit'] | d('64') }} + ThreadsPerChild {{ mpm_param['threads_per_child'] | d('25') }} + MaxConnectionsPerChild {{ mpm_param['max_connections_per_child'] | d('0') }} + + +# vim: syntax=apache ts=4 sw=4 sts=4 sr noet diff --git a/apache/map.jinja b/apache/map.jinja index d9f9afb..da477df 100644 --- a/apache/map.jinja +++ b/apache/map.jinja @@ -73,6 +73,8 @@ 'logrotatedir': '/etc/logrotate.d/httpd', 'wwwdir': '/var/www', 'default_charset': 'UTF-8', + 'use_require': False, + 'moddir': '/etc/httpd/conf.modules.d', }, 'Suse': { 'server': 'apache2', diff --git a/apache/mod_mpm.sls b/apache/mod_mpm.sls index c77cdb1..f51c992 100644 --- a/apache/mod_mpm.sls +++ b/apache/mod_mpm.sls @@ -1,7 +1,8 @@ -{% if grains['os_family']=="Debian" %} {% from "apache/map.jinja" import apache with context %} {% set mpm_module = salt['pillar.get']('apache:mpm:module', 'mpm_prefork') %} +{% if grains['os_family']=="Debian" %} + include: - apache @@ -36,3 +37,21 @@ a2dismod {{ mod }}: {% endfor %} {% endif %} + +{% if grains['os_family']=="RedHat" %} + +include: + - apache + +{{ apache.moddir }}/00-mpm-conf.conf: + file.managed: + - name: {{ apache.moddir }}/00-mpm.conf + - template: jinja + - source: + - salt://apache/files/RedHat/conf.modules.d/00-mpm.conf.jinja + - require: + - pkg: httpd + - watch_in: + - module: apache-restart + +{% endif %}