HTTP GETの負荷テストを実施する方法

WEBサーバーに対して負荷をかけたい場合、Jmeter は無償で利用できるとても便利なツールです。また、Jmeter はWindows上で動作します。ThousandEyesやAruba UXIなどのアクティブ監視商材を評価する際にとても役立ちました。

WEBサーバーに対しHTTP GET を大量に送信すると、WEBサーバーの負荷が上昇し、新規のコネクションが拒否されるようになります。Jmeter を使って高負荷をかけることで、このような状態を再現させることが出来ます。

Jmeter は以下から入手することが出来ます。

https://jmeter.apache.org/download_jmeter.cgi

 

Jmeter の起動

ダウンロードしたzipファイルを解凍し、apache-jmeter-5.5 > bin フォルダ内にある「jmeter.bat」をクリックすると起動できます。

 

HTTP GET の負荷設定

左側のTestPlanを右クリック、Add > Thread(Users) > Thread Group を開きます。

 

つぎに、Thread Group を選択し、以下の部分を設定します。

Number of Threads:1000 ← スレッドの数
Ramp-upperiod:3 ← スレッドを実施する期間
Loop Count:Infinite ← 繰り返し回数

 

つぎに、Thread Group を右クリック、Add > Sampler > HTTP Request を開きます。

 

つぎに、HTTP Request を選択し、ターゲットのIPアドレスを指定します。

 

つぎに、Thread Group を右クリック、Add > Listener > View Results Tree と View Results in Table を開きます。

View Results Tree と View Results in Table が追加されました。以上で設定は完了です。

 

負荷試験の実行

上部にある再生ボタンをクリックすると負荷が開始されます。停止する場合はSTOPボタンをクリックします。

実行結果を見る場合は、「View Results Tree」または「View Results in Table」から確認できます。

結果は上部の「Clear」アイコンで削除することが出来ます。

 

Aruba UXI でWEBサーバーの状態を確認

Jmeter で負荷をかけている状態をAruba UXI で確認すると以下のステータスになることが確認できました。

何らかの原因で、Aruba UXI からWEBサーバーに対して新しいコネクションが確立できない状態になっていることがわかります。また、自動パケットキャプチャーを開くこともできます。

クライアントからのSYNに対し、WEBサーバーはSYN/ACKを返すのではなく、RST/ACKを返してしまっていることが解ります。