2004年4月22日(木) 電車の中が既に寒い [同日]
● [tDiary] 503を返すtDiary
load averageを見て自滅するためのrubyライブラリ を改良して、ちゃんと503を返すようにしてみました。 CGIスクリプトのしょっぱなで何も考えずにrequireすればいい。 下記では、最近1分の負荷が3より大きいときに、クライアントにはエラーを返し、 ログにユーザーエージェントとIPアドレスを記録します。
if (av = (`uptime`.split( /[, ]+/ ))[10].to_f) > 4 then
puts <<_ERROR
Status: 503 Service Temporarily Unavailable
Content-type: text/html; charset=iso-8859-1
<html>
<head><title>503 Service Temporarily Unavailable</title></head>
<p>I am sorry but the load average is currently too high.</p>
</html>
_ERROR
STDERR.puts "[#{Time.now.strftime('%c')}] #{$0}: load average too high (#{av}): #{ENV['HTTP_USER_AGENT']} from #{ENV['REMOTE_ADDR']}"
exit
end
うまく動くかな? ていうかシステムコールを利用する拡張ライブラリをはよつくるべきだよね。
(追記) 制限を3にしていたらけっこうな人がひっかかっちゃったみたいでした。 すみません。4にしてみました。
● [memo] Nadoka: IRC Client Server Program
ささださん作のmadoka clone。そのうちためすー。[ruby-list: 39576]より。
[ツッコミを入れる]
最近のツッコまれどころ