--- loncom/lonnet/perl/lonnet.pm 2002/09/16 19:42:10 1.282 +++ loncom/lonnet/perl/lonnet.pm 2002/09/16 20:09:47 1.283 @@ -1,7 +1,7 @@ # The LearningOnline Network # TCP networking package # -# $Id: lonnet.pm,v 1.282 2002/09/16 19:42:10 albertel Exp $ +# $Id: lonnet.pm,v 1.283 2002/09/16 20:09:47 www Exp $ # # Copyright Michigan State University Board of Trustees # @@ -348,6 +348,28 @@ sub delenv { return 'ok'; } +# ------------------------------------------ Fight off request when overloaded + +sub overloaderror { + my ($r,$checkserver)=@_; + unless ($checkserver) { $checkserver=$perlvar{'lonHostID'}; } + my $loadavg; + if ($checkserver eq $perlvar{'lonHostID'}) { + my $loadfile=Apache::File->new('/proc/loadavg'); + $loadavg=<$loadfile>; + $loadavg =~ s/\s.*//g; + } else { + $loadavg=&reply('load',$checkserver); + } + my $overload=$loadavg-$perlvar{'lonLoadLim'}; + if ($overload>0) { + $r->err_headers_out->{'Retry-After'}=$overload*30; + $r->log_error('Overload of '.$overload.' on '.$checkserver); + return 413; + } + return ''; +} + # ------------------------------ Find server with least workload from spare.tab sub spareserver {