From 5216b029046a69a01985f2eb6337cc886a178454 Mon Sep 17 00:00:00 2001 From: Ian Wienand Date: Mon, 30 Jan 2017 14:35:45 +1100 Subject: [PATCH] Switch static.openstack.org to worker MPM We are seeing in the static.openstack.org logs the problem metioned in [1] which is leadning to dropped connections. This mpm showed some scalability bottlenecks in the past leading to the following error: "scoreboard is full, not at MaxRequestWorkers". ... From 2.4.24 onward, mpm-event is smarter and it is able to handle graceful terminations in a much better way I don't think we want to go outside the packages provided by Trusty, and it seems that even upping the number of servers/threads is not a reliable work-around to this problem. It seems like the simplest thing to do is avoid the problem all together by switching to the woker MPM, which is very simliar but not optimised for HTTP keep-alive. Since this is not an ajax-y type interactive server with a lot of long-lived clients, I think this will work fine. [1] https://httpd.apache.org/docs/2.4/mod/event.html Change-Id: I064b81076bcfcb200e0990627fc1aa0be8bbf058 --- modules/openstack_project/manifests/static.pp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/modules/openstack_project/manifests/static.pp b/modules/openstack_project/manifests/static.pp index 5305bd78bf..4ca4967c02 100644 --- a/modules/openstack_project/manifests/static.pp +++ b/modules/openstack_project/manifests/static.pp @@ -428,4 +428,20 @@ class openstack_project::static ( group => 'jenkins', require => User['jenkins'], } + + + # Until Apache 2.4.24 the event MPM has some issues scalability + # bottlenecks that were seen to drop connections, especially on + # larger files; see + # https://httpd.apache.org/docs/2.4/mod/event.html + # + # The main advantage of event MPM is for keep-alive requests which + # are not really a big issue on this static file server. Therefore + # we switch to the threaded worker MPM as a workaround. This can be + # reconsidered when the apache version running is sufficient to + # avoid these problems. + + httpd::mod { 'mpm_event': ensure => 'absent' } + httpd::mod { 'mpm_worker': ensure => 'present' } + }