summaryrefslogtreecommitdiff
path: root/t/t9501-gitweb-standalone-http-status.sh
diff options
context:
space:
mode:
authorJohn 'Warthog9' Hawley <warthog9@kernel.org>2010-01-30 22:30:39 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-01-30 23:53:50 (GMT)
commitb62a1a98bc65f52d972a3f403c5b29d6a84642fd (patch)
tree0568d98fc40a6ffff027ca79995aa6f3a4327440 /t/t9501-gitweb-standalone-http-status.sh
parent745a2db409c3b8346f28f6b2f1961b19051430f5 (diff)
downloadgit-b62a1a98bc65f52d972a3f403c5b29d6a84642fd.zip
git-b62a1a98bc65f52d972a3f403c5b29d6a84642fd.tar.gz
git-b62a1a98bc65f52d972a3f403c5b29d6a84642fd.tar.bz2
gitweb: Load checking
This changes slightly the behavior of gitweb, so that it verifies that the box isn't inundated with before attempting to serve gitweb. If the box is overloaded, it basically returns a 503 Server Unavailable until the load falls below the defined threshold. This helps dramatically if you have a box that's I/O bound, reaches a certain load and you don't want gitweb, the I/O hog that it is, increasing the pain the server is already undergoing. This behavior is controlled by $maxload configuration variable. Default is a load of 300, which for most cases should never be hit. Unset it (set it to undefined value, i.e. undef) to turn off checking. Currently it requires that '/proc/loadavg' file exists, otherwise the load check is bypassed (load is taken to be 0). So platforms that do not implement '/proc/loadavg' currently cannot use this feature (provisions are included for additional checks to be added by others). There is simple test in t/t9501-gitweb-standalone-http-status.sh to check that it correctly returns "503 Service Unavailable" if load is too high, and also if there are any Perl warnings or errors. Signed-off-by: John 'Warthog9' Hawley <warthog9@kernel.org> Signed-off-by: Jakub Narebski <jnareb@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t9501-gitweb-standalone-http-status.sh')
-rwxr-xr-xt/t9501-gitweb-standalone-http-status.sh22
1 files changed, 22 insertions, 0 deletions
diff --git a/t/t9501-gitweb-standalone-http-status.sh b/t/t9501-gitweb-standalone-http-status.sh
index 9e8bc01..7590f10 100755
--- a/t/t9501-gitweb-standalone-http-status.sh
+++ b/t/t9501-gitweb-standalone-http-status.sh
@@ -112,4 +112,26 @@ test_expect_success 'snapshots: bad object id' '
test_debug 'cat gitweb.output'
+# ----------------------------------------------------------------------
+# load checking
+
+# always hit the load limit
+cat >>gitweb_config.perl <<\EOF
+our $maxload = 0;
+EOF
+
+test_expect_success 'load checking: load too high (default action)' '
+ gitweb_run "p=.git" &&
+ grep "Status: 503 Service Unavailable" gitweb.headers &&
+ grep "503 - The load average on the server is too high" gitweb.body
+'
+test_debug 'cat gitweb.log' # just in case
+test_debug 'cat gitweb.headers'
+
+# turn off load checking
+cat >>gitweb_config.perl <<\EOF
+our $maxload = undef;
+EOF
+
+
test_done