Giuseppe Lavagetto has uploaded a new change for review. https://gerrit.wikimedia.org/r/178470
Change subject: mediawiki: allow use of mpm_worker instead of mpm_prefork ...................................................................... mediawiki: allow use of mpm_worker instead of mpm_prefork Change-Id: I2fb4f83ecb3548a6bd0809a18cff9c006f12e598 Signed-off-by: Giuseppe Lavagetto <[email protected]> --- M hieradata/mainrole/imagescaler.yaml M manifests/role/mediawiki.pp M modules/mediawiki/manifests/web.pp A modules/mediawiki/manifests/web/mpm_config.pp A modules/mediawiki/templates/apache/worker.conf.erb 5 files changed, 59 insertions(+), 20 deletions(-) git pull ssh://gerrit.wikimedia.org:29418/operations/puppet refs/changes/70/178470/1 diff --git a/hieradata/mainrole/imagescaler.yaml b/hieradata/mainrole/imagescaler.yaml index e919865..58a20f4 100644 --- a/hieradata/mainrole/imagescaler.yaml +++ b/hieradata/mainrole/imagescaler.yaml @@ -1,3 +1,3 @@ cluster: imagescaler role::mediawiki::webserver::pool: rendering -role::mediawiki::webserver::workers_limit: 30 +mediawiki::web::mpm_config::workers_limit: 30 diff --git a/manifests/role/mediawiki.pp b/manifests/role/mediawiki.pp index c949114..91ce421 100644 --- a/manifests/role/mediawiki.pp +++ b/manifests/role/mediawiki.pp @@ -39,15 +39,12 @@ } } -class role::mediawiki::webserver( $pool, $workers_limit = undef) { +class role::mediawiki::webserver( $pool) { include ::role::mediawiki::common include ::apache::monitoring include ::lvs::configuration include ::mediawiki::web::sites - - class { '::mediawiki::web': - workers_limit => $workers_limit, - } + include ::mediawiki::web $ips = $lvs::configuration::lvs_service_ips[$::realm][$pool][$::site] diff --git a/modules/mediawiki/manifests/web.pp b/modules/mediawiki/manifests/web.pp index 3a7c3db..6f3a3db 100644 --- a/modules/mediawiki/manifests/web.pp +++ b/modules/mediawiki/manifests/web.pp @@ -1,20 +1,12 @@ -class mediawiki::web( $workers_limit = undef ) { +class mediawiki::web { tag 'mediawiki', 'mw-apache-config' include ::apache include ::mediawiki include ::mediawiki::monitoring::webserver include ::mediawiki::web::modules + include ::mediawiki::web::mpm_config - $apache_server_limit = 256 - - if is_integer($workers_limit) { - $max_req_workers = min($workers_limit, $apache_server_limit) - } else { - $mem_available = to_bytes($::memorytotal) * 0.7 - $mem_per_worker = to_bytes('85M') - $max_req_workers = min(floor($mem_available /$mem_per_worker), $apache_server_limit) - } file { '/etc/apache2/apache2.conf': source => 'puppet:///modules/mediawiki/apache/apache2.conf', @@ -31,10 +23,6 @@ group => 'root', mode => '0755', before => File['/etc/apache2/apache2.conf'], - } - - apache::conf { 'prefork': - content => template('mediawiki/apache/prefork.conf.erb'), } apache::env { 'chuid_apache': diff --git a/modules/mediawiki/manifests/web/mpm_config.pp b/modules/mediawiki/manifests/web/mpm_config.pp new file mode 100644 index 0000000..7b5dbf8 --- /dev/null +++ b/modules/mediawiki/manifests/web/mpm_config.pp @@ -0,0 +1,35 @@ +# === Class mediawiki::web::mpm_config +class mediawiki::web::mpm_config($worker = 'prefork', $server_limit = undef, $workers_limit = undef){ + case $worker { + 'prefork': { + $apache_server_limit = 256 + if is_integer($workers_limit) { + $max_req_workers = min($workers_limit, $apache_server_limit) + } else { + $mem_available = to_bytes($::memorytotal) * 0.7 + $mem_per_worker = to_bytes('85M') + $max_req_workers = min(floor($mem_available /$mem_per_worker), $apache_server_limit) + } + } + 'worker': { + # this can only be used on hhvm servers + requires_os 'ubuntu >= trusty || debian >= jessie' + + $threads_per_child = 25 + $apache_server_limit = $::processorcount + $max_workers = $threads_per_child * $apache_server_limit + if is_integer($workers_limit) { + $max_req_workers = min($workers_limit, $max_workers) + } + else { + $max_req_workers = $max_workers + } + } + default: { fail('Only prefork and worker mpms are supported at the moment') } + } + + apache::conf { $worker: + content => template("mediawiki/apache/${worker}.conf.erb"), + } + +} diff --git a/modules/mediawiki/templates/apache/worker.conf.erb b/modules/mediawiki/templates/apache/worker.conf.erb new file mode 100644 index 0000000..7dc3be2 --- /dev/null +++ b/modules/mediawiki/templates/apache/worker.conf.erb @@ -0,0 +1,19 @@ +# Worker MPM +# StartServers: number of server processes to start +# ThreadsPerChild: the number of threads deployed by each child process +# MinSpareServers: minimum number of server threads which are kept spare +# MaxSpareServers: maximum number of server threads which are kept spare +# MaxRequestWorkers: maximum number of server processes allowed to start +# MaxConnectionsPerChild: maximum number of requests a server process serves +<IfModule mpm_worker_module> + ServerLimit <%= @apache_server_limit %> + StartServers 10 + ThreadsPerChild <%= @threads_per_child %> + MinSpareThreads 10 + MaxSpareThreads 25 + MaxRequestWorkers <%= @max_req_workers %> + <IfDefine SLOW> + MaxRequestWorkers 5 + </IfDefine> + MaxRequestsPerChild 300000 +</IfModule> -- To view, visit https://gerrit.wikimedia.org/r/178470 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2fb4f83ecb3548a6bd0809a18cff9c006f12e598 Gerrit-PatchSet: 1 Gerrit-Project: operations/puppet Gerrit-Branch: production Gerrit-Owner: Giuseppe Lavagetto <[email protected]> _______________________________________________ MediaWiki-commits mailing list [email protected] https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits
