DoSに耐えそうなonlineプラグイン


修正

Overhaul: O(N) => O(1).
* 1000 unique-host-get-3-pages causes 3000 writes => 1000 writes + 2000 reads.
* Four crawler-get-300-pages causes 1200 writes   => 4 writes + 1196 reads.
* 100 online plugin in a page causes 100 writes   => 1 write + 99 caches

メッセージ

従来のonlineプラグインにボトルネック(常時ファイルに書き込む、ファイルロックの待ち行列が発生しやすい、再呼び出し時の動作が重い)がありそうでしたので、作り直しました。

onlineプラグインとは

従来の処理

O(N): 負荷は総アクセス数(ユニークユーザー数 x 平均アクセス数)に比例する
  * ユニークなホスト 1000 台がそれぞれ 3 ページにアクセスした場合、
    3000 回のファイル書き込みが発生する
  * 4 台のWebクローラーが300ページにアクセスした場合、
    1200 回のファイル書き込みが発生する
  * onlineプラグインを100個設置すると
    100 回のファイル書き込みが発生する

問題点: 負荷がユニークユーザー数 x 平均アクセス数に比例する

今回の処理

O(1): 負荷はユニークユーザー数に比例する
  * ユニークなホスト 1000 台がそれぞれ 3 ページにアクセスした場合、
    1000 回のファイル書き込み(と2000回のファイル読み込み)が発生する
  * 4 台のWebクローラーが300ページにアクセスした場合、
    4 回のファイル書き込み(と1196回のファイル読み込み)が発生する
  * onlineプラグインを100個設置すると
    1 回のファイル書き込み(と99回のメモリ上のキャッシュ参照)が発生する

改善点: 負荷はユニークユーザー数に比例する



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-03-20 (金) 14:36:11
Site admin: PukiWiki Development Team

PukiWiki 1.5.3+ © 2001-2020 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u12. HTML convert time: 0.636 sec.

OSDN