LB_URL = 'http://alb.internal.example.com/stress/1/5' MINUTES = 5 MINUS_RANGE = 5 @config = { 'lowload' => [20], 'highload' => [90], 'spike' => [90, 90, 100, 90, 20, 20, 20, 10, 10, 20, 20, 10, 10, 20], 'smallspike' => [100, 50, 20, 20, 10, 10, 20, 20, 10, 10, 20], 'wave' => [20, 20, 30, 30, 40, 40, 50, 50, 60, 60, 70, 70, 80, 80, 90, 80, 80, 70, 70, 60, 60, 50, 50, 40, 40, 30, 30] } DEFAULT_MODE = 'smallspike'
smallspike
であれば[100, 50, 20, 20,
10, 10, 20, 20, 10, 10, 20]
がリクエスト設定で、1分目〜5分目は﹁100 - (ランダムに0〜5) 回のリクエスト﹂を毎分実行、6分目〜10分目は﹁50 - (ランダムに0〜5) 回のリクエスト﹂を毎分実行、……となる。最後まで進んだらまた最初に戻る。
lowload
とホストメモに書いたら、﹁20 - (ランダムに0〜5)回のリクエスト﹂が毎分実行されるように変化する。
パワーのないバックエンドを前提にしているため、実行するリクエスト数はかなり少ないものになっている︵サンプル設定では多くて100/分︶。
何かの本番Webサービス向けなどにもっと多いものにすることができるかどうかは、saba-load-requesterを実行する環境での許容度によってくる。大量のGETリクエストを1箇所で発行すると、送信側なり経路なり受信側なりでブロックされる可能性もある。
たとえばmkr
の呼び出しのところをいじって、環境変数MACKER
EL_APIKEY
およびホストIDを指定しておけば、別に自身のmackerel-agentに頼らずともどこでもホストメモを見られるので、リクエスタを分散して制御するという手法もとれるだろう。……ってなんてDDoSシステム?
/
: Hello Worldを返す
●/status/数字
: 数字に指定したステータスコードでHello Worldを返す
●/sleep/秒数
: 指定秒数待機してからHello Worldを返す
●/stress/CPU数/秒数
: CPU数ぶんの負荷を秒数ぶん実行する。stressコマンドを呼び出している
アプリケーションサーバー負荷っぽいのを狙いとしているのは最後のやつね。