Take a “new step” Achieved by Value Engineering tech.sprasia.co.jp

AWSを利用した負荷テストの実現方法

こんにちは。スプラシアでSREを担当している鈴木です。

弊社ではインフラ環境の構築にAWSを利用しています。AWSでは環境を構築する以外にも負荷テストを実施するためのテンプレートも用意されています。今回はAWSを利用した負荷テストの実現方法についてご紹介します。

CloudFormationスタックの作成

AWSには様々な課題を解決するためのドキュメントが沢山用意されています。今回紹介する負荷テストもその中の一つを利用します。

https://aws.amazon.com/jp/solutions/implementations/distributed-load-testing-on-aws/

上記のURLへアクセスするとAWSで分散負荷テストを実現するための手順が紹介されています。
今回は仕組みなどの詳細は割愛しますがアーキテクチャに興味が沸いた時にはこちらのページを参考にしてみてください。

ページ内中ほどの右側にあります、
AWSでの分散負荷テストにある「AWSコンソールで起動する」をクリックしてください。

 

ログインしていない場合はログインした後にスタックの作成というページへ移行します。
簡単に説明をしますと、AWSにはCloudFormationといって環境構築やAWSの機能を用いた様々な構成をテンプレートのような形で作成することが可能です。
スタックはそのテンプレートのような位置づけになり、
今回は分散負荷テストのスタックを作成する形になります。

最初の画面ではデフォルトのままで「次へ」を選択します。
次にスタックの詳細を指定するページに移ります。

スタック生成ページ

 

スタックの名前は自身が分かりやすいように「LoadTest」のような名前を指定します。
それ以外に必須のパラメータは下記の2つです。

・Console Administrator Name
負荷テスト管理画面のadmin権限を持つユーザーネームです。ログインする時に必要になります。

・Console Administrator Email
admin権限所有者のメールアドレスを入力します。このメール充てに管理画面のアクセス情報などが送られます。

 

他にはVPCやサブネットの指定などもありますが今回は不要のため、このままの状態で「次へ」をクリックします。次のスタックオプションの設定と、レビューの部分はデフォルトのまま進め、レビューページの最後にあるチェックボックスにチェックを入れた後に送信ボタンをクリックします。

 

この後はCloudFormation側で構築が始まりますので、メールを受信するまで待ちます。

ダッシュボードへログイン

タックを作成するとしばらくしてメールを受信します。

受信するメールの内容

 

そのメールには負荷テスト用のURLとユーザーネーム(1で指定したもの)とパスワードが記載されています。URLにアクセスしてユーザーネームとパスワードを入力するとテストページへログインします。
初回ログイン時はパスワードの更新を求められますので任意のパスワードに更新します。
パスワード更新時にエラーが出た場合は文字数を増やしたり記号を追加して再度試してみてください。

負荷テストの実施

最初にログインをすると画像のようなページが表示されます。

負荷テスト管理ページ画面上部の「CREATE TEST」を選択しテストケースを作成します。パラメータの主な説明は下記の通りです。

Name:負荷テストに名前を設定します。
Description:テストの説明などを入力します。
TaskCount:負荷テストを実施するdocker containerの数を指定します。
Concurrency:各container上からリクエストを送るvirtual usersの数を指定します。
TaskCount × Concurrency の数が仮想アクセス人数という計算になります。Ramp up:Concurrencyに設定した値になるまでどのくらいの時間をかけるかを指定します。
Hold For:リクエスト数がConccrencyに達した状態をどのくらい維持するかを指定します。
Run Now/Run on Schedule:テストを即時実行するかスケジュールを指定するかを選択します。
Include Live Data:テスト中も結果をリアルタイムで視聴したい場合にチェックをいれます。
Scenario:負荷をかけるリクエストの設定を行います。シナリオは直接入力する方法とJMeterファイルを利用して作成する方法のどちらかを選択します。

全ての設定が完了したら「Run Now」をクリックしテストを開始します。
テスト中は下記のような画像になります。Include Live Dataにチェックを入れたときはページの最下部でテスト状況を確認することも可能です。

テスト結果の確認

Refreshボタンなどをクリックしてページを更新しているとそのうちテストが終了し、ステータスがCOMPLETEになります。ページ中央でTest Resultsの部分にテストの結果が記録されています。

負荷テスト結果画面

 

結果では平均レスポンス時間や平均レイテンシーなどを確認したり、リクエスト総数と成功・失敗した数、秒間何回リクエストを送ったかなどを確認することができます。
グラフも記載されており、今回の図ではRampUpが1分のためVirtualUsersが1分かけて最大値に達し、Hold Forで指定した1分間維持している状態になっています。

おまけ

弊社では上記の負荷テストを行いつつ、RDSを利用する時はPerformance Insigthsを確認して不要なSQLが発行されていないか、EC2のメモリ、CPU、ロードアベレージが高くなっていないか等を確認し、必要に応じてAutoScalingの設定やスペックを上げたりパラメータの調整などを行ってメンテナンスをしています。

まとめ

上記のようにAWSでは負荷テスト専用の機能はないものの、CloudFormationを利用して負荷テストの環境を構築することができます。負荷テストにはJmeterを使うケースは多いかもしれませんが、このツールでは自分でサーバーを用意してテストをする必要もなく結果も見やすくなっているためJmeterを使っている方には特におすすめです。
是非試してみてください。

関連カテゴリ 最新記事一覧