Giuseppe Lavagetto has submitted this change and it was merged.

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, 61 insertions(+), 20 deletions(-)

Approvals:
  Filippo Giunchedi: Looks good to me, but someone else must approve
  Giuseppe Lavagetto: Looks good to me, approved
  Alexandros Kosiaris: Looks good to me, approved
  jenkins-bot: Verified



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..8301b73
--- /dev/null
+++ b/modules/mediawiki/manifests/web/mpm_config.pp
@@ -0,0 +1,37 @@
+# === Class mediawiki::web::mpm_config
+class mediawiki::web::mpm_config($mpm = 'prefork', $server_limit = undef, 
$workers_limit = undef){
+    case $mpm {
+        'prefork': {
+            $apache_server_limit = 256
+            if $workers_limit and is_integer($workers_limit) {
+                $max_req_workers = min($workers_limit, $apache_server_limit)
+            } else {
+                # Default if no override has been defined
+                $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 $workers_limit and is_integer($workers_limit) {
+                $max_req_workers = min($workers_limit, $max_workers)
+            }
+            else {
+                # Default if no override has been defined
+                $max_req_workers = $max_workers
+            }
+        }
+        default: { fail('Only prefork and worker mpms are supported at the 
moment') }
+    }
+
+    apache::conf { $mpm:
+        content  => template("mediawiki/apache/${mpm}.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: merged
Gerrit-Change-Id: I2fb4f83ecb3548a6bd0809a18cff9c006f12e598
Gerrit-PatchSet: 4
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Giuseppe Lavagetto <[email protected]>
Gerrit-Reviewer: Alexandros Kosiaris <[email protected]>
Gerrit-Reviewer: Faidon Liambotis <[email protected]>
Gerrit-Reviewer: Filippo Giunchedi <[email protected]>
Gerrit-Reviewer: Giuseppe Lavagetto <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to