サーバ/インフラを支える技術

サーバ/インフラを支える技術
スケーラビリティ、ハイパフォーマンス、省力運用

サーバにDoS耐性を付ける
mod_dosdetectorこれの開発http://www.hatena.com/さんが作成してくれた
ものを流用してみました。

詳しくはこちらを参考にして頂いた方がより具体的に書かれていますが、
サーバにDoS耐性を付けるサーバにDoS耐性を付ける - stanaka's blog

【To Do】
■サーバ単位での単位時間当りのアクセスを計測
■判定結果は、環境変数の設定によって通知

柔軟性については、自分のところのポリシーを明確にして、
どんどん提案するなり、自分で決めていくなりを明確にしない事には役にはたたないでしょう。


Apacheの基本理解
workerプロセス、スレッド数にまつわる設定。

MaxClientsとThreadsPerChild
workerモデルの場合Apacheは複数の子プロセスを立ち上げ、それぞれのプロセス内で複数のスレッドを生成し、
結局「プロセス数×プロセスあたりのスレッド数」分のリクエストを同時処理する事になります。

このプロセスあたりのスレッド数を制御するのが、ThreadsPerChildです。
子プロセスの最大値は、
MaxClients/ThreadsPerChild
で決まります。

メモリを2GB〜4GB程搭載さいているであれば、
同時接続数は1000〜10000程度処理する事も可能でしょう。
との事。

たとえば、
最大プロセス数:32
プロセスあたりの最大スレッド数:128
同時に扱えるクライアントの数:32×128=4096

と設定する場合は下記になります。

StartServers 2
StartLimit 32
ThreadLimit 128
MaxClients 4096
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 128
MaxRequestsPerChild 0



実際には、abコマンドで試すだけでは実際とはまた訳が違うからな。。。
それでもどこまで性能がでるのかを知りたい性は、SEなら必要なことですよね???!!!
きっと。