[Tep-j-general] 集中爆撃に一定確率で503を返す

Zurück zum Archiv-Index

hawar****@yahoo***** hawar****@yahoo*****
2008年 2月 9日 (土) 17:38:06 JST


渡辺と申します。

hamada wrote on 2008/02/08 11:58
with Subject: [Tep-j-general] 集中爆撃に一定確率で503を返す

> 先日当方は実際に集中爆撃を食らい、Load Averageが3を越えるような状態が暫
> く続いて涙目でしたので、自動防御の対策を講じることにしました。

ということで、特定の人物(ロボット)による過度の集中アクセスによって
サーバーが過負荷になって大変、という問題なのですから、

> //集中爆撃対策
> $ip_query = tep_db_query("SELECT ip_address FROM " . TABLE_WHOS_ONLINE . " WHERE ip_address = '" . 
> getenv("REMOTE_ADDR") . "'");
> 
> if (tep_db_num_rows($ip_query) > 30 && rand(0,9) < 5) {
> 
>   header($_SERVER['SERVER_PROTOCOL'] . " 503 Service Temporary Unavailable");
>   exit;
> 
> }

これだと、すべてのアクセスについていちいちSELECT文を
DBに投げることになって、そのこと自体がサーバーに過負荷になってしまうという
自己矛盾をはらんでしまいます。

DBにたよるよりは、下記のような一時ファイルを使った方法
のほうがおすすめです。
http://neta.ywcafe.net/000740.html




Tep-j-general メーリングリストの案内
Zurück zum Archiv-Index