« チョコバナナムースを食う | メイン | TX回数券が金券屋で850円 »

2005年09月04日

プロセス数の制限

CEEK.JP NEWS が、月末にポコポコ落ちるのでプロセス数の制限を行うことにしました。全ての分野に対し、任意のキーワードで検索をかけるとき、検索プロセスが 10 を超えている場合にエラーが出ます。

Service Temporarily Unavailable, Please wait about 12 seconds.

HTTP のヘッダまで書き換えていないので、単に表示されて検索が行われないだけですけど。この表示が出たら、少し時間をおいてリロードしてくださいな。ちなみに、秒数は、プロセス数だったりします。

sub ps_check {
    my $ps = `ps aux | grep search.cgi`;
    my $i = -1;

    foreach (split (/\n/, $ps)) {
        $i++;
    }

    return $i;
}

こんな感じで実装しています。プロセス一覧から grep で抜き出したいプロセスを指定して、その数を数えてるだけですね。数を数える変数の $i が -1 から始まっているのは、自分自身(grep search.cgi)が含まれるからです。

my $i = split(/\n/, $ps) - 1;

こっちの方が、短くていいかもしれない。

実際に制限すべきなのは、データベース(MySQL)への接続なのですが、設定を変えるのもだるいし、制限の条件があるので、プログラム側で制限しているということで。

さっさと Hyper Estraier に乗り換えないとなー。アイデアは固まってるので、実装するだけなんだけど。

2005年09月04日 16:28 | Development

トラックバック

このリストは、次のエントリーを参照しています: プロセス数の制限:

» 検索プロセス数の制限 from Project MultiBurst
先日、うちの自宅サーバーが、「DoS攻撃を受けたのか?」と書きましたが、 どうやら勘違いだったようです。 ページの上にナビゲーションバーがあるのですが、 そこか... [続きを読む]

トラックバック時刻: 2006年03月04日 21:59

コメント

参考にさせて頂きました。
ありがとうございました!!

投稿者 showBOO : 2006年03月04日 21:49

>> showBOO さん
参考になれば幸いです。
コマンドを直接叩いているので、任意コマンドが叩かれないようにお気を付けください。

投稿者 ceekz : 2006年03月05日 17:09