過去にウェブサーバがアクセス過多で一部の機能で糞づまりする現象に悩まされた経緯があります。
一度詰まると連打(何度もリロード)されるのでさらに負荷が高まり、サーバ停止→サービス停止に至りました。
本来ならアプリ・インフラのチューニング、設備追加投資などで対処すべきものですが、お客様のビジネス的には採算が合わないケースもあります。
とはいえ、高負荷で全サービスが停止したり、タイムセールやチケット販売などでは購入完了までさせないとクレームが多発するということもあり、アクセスをURL単位・IP単位で管理し、一定時間内に指定したアクセス数を超えたらソーリー画面を出力するモジュールを作りました。
doshelper
ウェブサーバ単体でプロセス単位や共有メモリで管理するモジュールは昔から存在します。
(mod_evasive、mod_dosdetectorなど)
ただ、アクセストレンドに最適化(急なサーバ増強・削減が必要なケース)が求められる昨今、設定見直しからのサーバ再起動が、大量にウェブサーバを分散配置した環境では非常にめんどいということもあり、いちいち閾値を見直さなくても良いようにアクセス管理にKVS(Redis)を採用し、複数サーバで共有する仕組みにしています。
導入してからは高負荷に陥ることもなく、さらにログイン認証のURLに設定することで大量の不正ログイン試行も弾き、導入効果を得ています。
こんな事例でも、良いのでしょうか?
ちなみに公開したのはついこの前ですが、検証含めて開発期間は結構かかりましたw
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/18 08:48