nDiki

2003年12月16日 (火)

[ www.naney.org ] CGI プログラムによるサーバ過負荷

ホスティングサービス会社からメール。 12月16日0:00-0:20にかけて、naney.org に設置しているCGI プログラムが原因でサーバが過負荷になり動作不安定な状態になったため、実行権限を落としたとのこと。

あちゃ。

メールでは naney.org に設定しているハイパー日記システムのうち一方(この日記でない方)が原因との報告だったが、アクセスログをみるとそちへの最終アクセスは 12/15 18:25:19 でどうも違う感じ。 逆にこちらの hns の方に、61.116.156.147 から 23:42:32 - 00:17:37 の間に少なくとも523回のアクセスがあり、どうやらこちらが過負荷の原因になってしまったようだ。

ここ最近1日に1度から数度、普通のISP経由で連続アクセスがある。 UAはIEをなのっているが、ロボットのようでもある。 なかなか弾きにくい相手である。

できれば連続アクセスだけ拒否するようにしたいのだが、そう簡単でもない。

hnsSpeedyCGI では動くようなコードでもなさそうだし。

とりあえず index.cgi を書き換えて サーバの load average が高くなっている状態では 503 Unavailable を即座に返すように修正。

 BEGIN {
   my $average = `uptime`;
   $average =~ /(\d+(?:\.\d+)?),?\s+(\d+(?:\.\d+)?),?\s+(\d+(?:\.\d+)?)/;
   if ($1 > 50) {
     print "Status: 503 Unavailable\r\n\r\n";
     print "Server is busy, please retry later.";
     exit 0;
   }
 }

を追加。load average が 50 (値は調整)を越えたら 503 になるようにしておいた。

ということで、この日記が 503 だったらきっとサーバがイッパイイッパイということです。

[ 12月16日全て ]

About

Process Time: 0.063536s / load averages: 0.26, 0.25, 0.25