2004年04月22日(Thu) 電車の中が既に寒い [同日]
● [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]より。
[ツッコミを入れる]
最近のツッコまれどころ