継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

AWS の負荷テストソリューションを使ってみたメモ✍

タダです.

システム開発において負荷テストをかけてみるケースってあると思うのですが,ローカルだとマシンスペックが足りないかもってなったときに専用環境が欲しくなります.AWS は分散型の負荷テストを簡単に行うためのソリューションを提供しています.この記事では Distributed Load Testing on AWS を試してみたメモをまとめます.

aws.amazon.com

AWS の負荷テストソリューション概要

Distributed Load Testing on AWS はアプリケーションのパフォーマンステストを大規模に自動化するためのソリューションです.

docs.aws.amazon.com

負荷テストソリューションの展開方法

Distributed Load Testing on AWS を展開するために専用の CloudFormation テンプレートを使用します.デフォルトではテンプレートはバージニアリージョンで展開されるようになっていますが,別リージョンでも展開可能です.今回は東京リージョンでやります.大体8分ほどでスタック作成が完了しました.

CloudFormation で入力するパラメーター

負荷テストコンソールへのログイン情報通知

試しに負荷テストをかけてみる

負荷テストソリューション環境が作成された後,簡易なテストシナリオを作ります.以下がシナリオの主要パラメーターでそのまま RUN NOW からテスト実行しました.

  • Name: <任意の名前>
  • Description: <任意の説明>
  • Task Count: <負荷をかける ECS タスク数>
  • Concurrency: <タスク毎の同時接続数>
  • Ramp Up: <設定した Concurrency 数に達するまでの時間>
  • Hold For: <設定した Concurrency 数を保持する時間>
  • HTTP endpoint under test: <テストを実行するターゲット URL>

Nginx を ECS Fargate でパブリックサブネットにて稼働させてる環境へのテストシナリオ

テスト完了するとレポートが表示されます.ここで表示される情報の意味は以下のとおりです.

  • Average Response Time: テストによって生成されたすべてのリクエストの平均応答時間 (秒)
  • Average Latency: テストによって生成されたすべてのリクエストの平均レイテンシー (秒)
  • Average Connection Time: テストで生成されたすべてのリクエストについて、ホストへの接続にかかった平均時間 (秒)
  • Average Bandwidth: テストで生成されたすべてのリクエストの平均帯域幅
  • Total Count: リクエストの総数
  • Success Count: 成功したリクエストの総数
  • Error Count: エラーの総数
  • Requests Per Second: テストで生成されたすべてのリクエストの 1 秒あたりの平均リクエスト数
  • Percentile Response Time: テストの応答時間のパーセンタイル値 (最大応答時間は 100 %、最小応答時間は 0 %)

テスト結果表示イメージ

まとめ

AWS の負荷テストソリューションの概要と簡単に試した結果をまとめました.簡単にテスト実行環境を用意してすぐに負荷をかけられるのは良いなと感じました.さらっとしか触られていないため色々試してみたいなと思います.