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