« ナイトメア 『the WORLD/アルミナ』(p) | メイン(m) | 偽みらのが出没している模様 »(n)

mod_rewriteでサーバーの負荷が高いときだけリダイレクトする

ワタシが働いている会社のホームページは、たまーにYahooのトピックスからリンクされます。
トピックスに載るとそれはもう大量のアクセスが津波のように押し寄せてきて、あっというまにサーバーのリソースを食いつぶしてアクセス不能になってしまいます。

こういうときのために、Contents Delivery Networkによるキャッシングも利用してます。
今までは、リンクされそうになったらmod_rewriteでリダイレクトって方法を使っていました。
でも毎回これをやるのが面倒になってきたので、なんとかならんかなーと思って、RewriteMapに初挑戦してみた。

RewriteMap使えばRewriteCondとかRewriteRuleにプログラムの出力結果を使うことが出来るようになるので、これでWebサーバーのロードアベレージを見て高いときだけリダイレクトってのが出来そうである。

いそいろ調べて試行錯誤した結果、こんな感じにやったら、ロードアベレージが高いときだけリダイレクトしてくれるようになった(っぽい)。
やった!これでYahoo!なんて怖くない!
しばらくこれで運用してみよう。

httpd.conf

RewriteMap ldavg prg:/path/to/loadaverage.pl
RewriteCond %{HTTP_HOST} !^hoge\.sample\.com$
RewriteCond %{HTTP_REFERER} dailynews\.yahoo\.co\.jp
RewriteCond ${ldavg:} >5.00
RewriteRule ^/news/(.*)/$ http://hoge.sample.com/news/$1/ [R,L]

loadaverage.pl

#!/usr/bin/perl

use strict;
$| = 1;

while (<STDIN>) {
    my ($ldavg1, $ldavg2, $ldavg3) = `uptime` =~ /load average:\s+([.0-9]+),\s+([.0-9]+),\s+([.0-9]+)/;
    print $ldavg1 + 0 . "\n";
}

まだYahooからリンクされていないので、本当に思い通り動くのかはわからない…。



« ナイトメア 『the WORLD/アルミナ』 | メイン | 偽みらのが出没している模様 »

Trackbacks

このエントリーのトラックバックURL:

この一覧は、次のエントリーを参照しています: mod_rewriteでサーバーの負荷が高いときだけリダイレクトする:

» perl - BSD::getloadavg 送信元 404 Blog Not Found
この部分がなんとも惜しいような気がしたので書きました。 Milano::Monolog: mod_rewriteでサーバーの負荷が高いときだ... [詳しくはこちら]

» Trick or Treat! 26 送信元 BLUE NORTH
くー@ ぉ願ぃします(*+'`从) 920 今回、リンクにオマケ(OverLib)は付けてません(^-^ 流行っているにしても打ちづらそうな書き方ですね... [詳しくはこちら]

» サーバーが高負荷の場合にのみリダイレクトする方法 送信元 サーバー管理者のメモ
http://rebecca.ac/milano/mt/m-t-t-b.cgi/1567 mod_rewriteとプログラムを組み合わせたリダイレク... [詳しくはこちら]

Post a commnet

AMN sponsor rolls


著書

実践Web2.0 BOOK 人気ブロガー直伝! 一歩先行くWeb2.0的ワーキングスタイル
ムーバブル・タイププラグインディレクトリ―PROFESSIONAL NETWORK