Reduce unnecessary apache restarts
Systemd limits the total number of restarts that a service can undergo
in a short period of time. On faster nodes all of our apache restarts
hit that limit and we eventually fail. Mitigate this by removing
unnecessary restarts.
Change-Id: I425bb9eec525d82372f05edc63e4fb931e5a4887
diff --git a/lib/tls b/lib/tls
index 0a598e1..cff5c63 100644
--- a/lib/tls
+++ b/lib/tls
@@ -452,6 +452,7 @@
# ===============
function tune_apache_connections {
+ local should_restart=$1
local tuning_file=$APACHE_SETTINGS_DIR/connection-tuning.conf
if ! [ -f $tuning_file ] ; then
sudo bash -c "cat > $tuning_file" << EOF
@@ -494,7 +495,12 @@
MaxRequestsPerChild 0
</IfModule>
EOF
- restart_apache_server
+ if [ "$should_restart" != "norestart" ] ; then
+ # Only restart the apache server if we know we really want to
+ # do so. Too many restarts in a short period of time is treated
+ # as an error by systemd.
+ restart_apache_server
+ fi
fi
}
@@ -509,7 +515,8 @@
# 8190 is the default apache size.
local f_header_size=${6:-8190}
- tune_apache_connections
+ # We don't restart apache here as we'll do it at the end of the function.
+ tune_apache_connections norestart
local config_file
config_file=$(apache_site_config_for $b_service)
@@ -558,7 +565,9 @@
</VirtualHost>
EOF
for mod in headers ssl proxy proxy_http; do
- enable_apache_mod $mod
+ # We don't need to restart here as we will restart once at the end
+ # of the function.
+ enable_apache_mod $mod norestart
done
enable_apache_site $b_service
restart_apache_server