Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
はじめての Gatling
Naoya Nakazawa @n0ts
2016/02/16
目次
• Gatling とは
• Gatling のインストール方法
• Gatling レコーダー
• Gatling の使い方
• Gatling のレポート
• Gatling の実例 Tips
Gatling とは
• http://gatling.io
• Scala ベースの高負荷テストフレームワーク
• ab や wrk のようなベンチマークに近いが、Scala でロ
ジックを記述することができる
• ab (Apache Be...
特長
• HTML レポートで出力することができる
• HTTP GET 以外にも POST にも対応している
• リファラー、クッキーの付与はデフォルトで対応してい
る!
• Scala 力が低くても以外と簡単に設定を書くことが出来
る(自験...
インストール
1. JDK7u6 以降が必要なので、インストール
2. 公式ホームページから zip ファイルをダウンロード
http://gatling.io/#/download
3. Linux / OS X なら bin/gatling...
レコーダー
• Gatling のテストシナリオを自動的に生成するツール
• bin/recorder.sh で実行する
• レコーダーで開始すると、プロキシ経由のリクエスト
が自動的に Gatling のシミュレーションファイルとし
て保存さ...
レコーダー画面
レコーダーで生成されるシナリオの例
package computerdatabase // パッケージ名
import io.gatling.core.Predef._ // 必要なインポートたち
import io.gatling.http....
実行例
$	bin/gatling.sh

GATLING_HOME	is	set	to	$GATLING_ROOT

Choose	a	simulation	number:

					[0]	test.BasicSimulation

		...
実行結果
• あわせて results 以下に HTML ファイルとして出力され
る
http://gatling.io/docs/2.1.1/general/reports.html
Gatling の実例
同じリクエストを繰り返す
• 5 回連続で繰り返す
val scn = scenario("RepeatBenchmark")
.repeat(5, "n") {
exec(http("top").get("/"))
}
ある条件のときのみリクエストをする
• scenarioProperty が pv のときリクエストをする
val scenarioProperty = System.getProperty("scenario",
"").toString

...
ある割合ごとにリクエストをする
• / を 50%、/foo を 20%、/bar を 30% ずつリクエスト
する
val scn = scenario("RandomBenchmark")

.randomSwitch(
50.0 -> e...
リクエストに動的にクッキーを付与する
• / のクッキー uid を /cookie へ付与する
val scn = scenario("CookieBenchmark")

.exec(http("top")
.get("/")
.check...
リクエストに動的にクッキーを付与する
• /baz へのリクエストは "bar UA" にする
val userAgent = Map("User-Agent" -> "bar UA")
val scn = scenario("UABenchm...
ステータスコード 303 はステータス OK とする
• /redirect は 303 を返して、リダイレクトはしない
val scn = scenario("RedirectBenchmark")

.exec(http("top")
.g...
この他は公式ドキュメントをどうぞ

http://gatling.io/docs/2.0.0-RC5/general/
index.html
Enjoy!!!
Nächste SlideShare
Wird geladen in …5
×

はじめての Gatling

8.527 Aufrufe

Veröffentlicht am

Gatling 入門です

Veröffentlicht in: Technologie
  • Dating direct: ❤❤❤ http://bit.ly/36cXjBY ❤❤❤
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • Dating for everyone is here: ❤❤❤ http://bit.ly/36cXjBY ❤❤❤
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

はじめての Gatling

  1. 1. はじめての Gatling Naoya Nakazawa @n0ts 2016/02/16
  2. 2. 目次 • Gatling とは • Gatling のインストール方法 • Gatling レコーダー • Gatling の使い方 • Gatling のレポート • Gatling の実例 Tips
  3. 3. Gatling とは • http://gatling.io • Scala ベースの高負荷テストフレームワーク • ab や wrk のようなベンチマークに近いが、Scala でロ ジックを記述することができる • ab (Apache Bench): • https://httpd.apache.org/docs/2.4/programs/ ab.html • wrk: • https://github.com/wg/wrk
  4. 4. 特長 • HTML レポートで出力することができる • HTTP GET 以外にも POST にも対応している • リファラー、クッキーの付与はデフォルトで対応してい る! • Scala 力が低くても以外と簡単に設定を書くことが出来 る(自験!)
  5. 5. インストール 1. JDK7u6 以降が必要なので、インストール 2. 公式ホームページから zip ファイルをダウンロード http://gatling.io/#/download 3. Linux / OS X なら bin/gatling.sh あるいは、Windows なら bin/gatling.bat で実行するだけ
  6. 6. レコーダー • Gatling のテストシナリオを自動的に生成するツール • bin/recorder.sh で実行する • レコーダーで開始すると、プロキシ経由のリクエスト が自動的に Gatling のシミュレーションファイルとし て保存される
  7. 7. レコーダー画面
  8. 8. レコーダーで生成されるシナリオの例 package computerdatabase // パッケージ名 import io.gatling.core.Predef._ // 必要なインポートたち import io.gatling.http.Predef._ import scala.concurrent.duration._ class BasicSimulation extends Simulation { // クラス定義、Simulation を敬称しないといけない val httpConf = http // HTTP リクエストの共通設定 .baseURL("http://computer-database.gatling.io") // リクエスト対象の URL .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // 共通の HTTP ヘッダー .doNotTrackHeader("1") // DNT ヘッダーの送信 .acceptLanguageHeader("en-US,en;q=0.5") // 受け入れる言語ヘッダーの送信 .acceptEncodingHeader("gzip, deflate") // エンコーディングヘッダーの送信 .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") // ユーザエージェントの送信 val scn = scenario("BasicSimulation") // テストシナリオの定義 .exec(http("request_1") // HTTP リクエスト名、"request_1" は最終レポートに表示される .get("/")) // URI / へ GET リクエストする .pause(5) // 一時スリープタイム setUp( // このシミュレーションで実行するシナリオのセットアップ scn.inject(atOnceUsers(1)) // scn という名前で 1 シングルユーザでリクエストする ).protocols(httpConf) // 最初の HTTP リクエストの共通設定を付与する }
  9. 9. 実行例 $ bin/gatling.sh GATLING_HOME is set to $GATLING_ROOT Choose a simulation number: [0] test.BasicSimulation [1] test.FooSimulation ※番号を入力 1 ... ---- Global Information -------------------------------------------------------- > request count 10 (OK=10 KO=0 ) > min response time 5 (OK=5 KO=- ) > max response time 58 (OK=58 KO=- ) > mean response time 16 (OK=16 KO=- ) > std deviation 14 (OK=14 KO=- ) > response time 50th percentile 12 (OK=12 KO=- ) > response time 75th percentile 17 (OK=17 KO=- ) > mean requests/sec 5.141 (OK=5.141 KO=- ) *1 ---- Response Time Distribution ------------------------------------------------ > t < 800 ms 10 (100%) > 800 ms < t < 1200 ms 0 ( 0%) > t > 1200 ms 0 ( 0%) > failed 0 ( 0%) ================================================================================ Reports generated in 0s. Please open the following file: results/scenariosimulation-xxx/index.html *1: 秒間あたりの処理したりクエスト数、KO は NG という意味
  10. 10. 実行結果 • あわせて results 以下に HTML ファイルとして出力され る http://gatling.io/docs/2.1.1/general/reports.html
  11. 11. Gatling の実例
  12. 12. 同じリクエストを繰り返す • 5 回連続で繰り返す val scn = scenario("RepeatBenchmark") .repeat(5, "n") { exec(http("top").get("/")) }
  13. 13. ある条件のときのみリクエストをする • scenarioProperty が pv のときリクエストをする val scenarioProperty = System.getProperty("scenario", "").toString
 val scn = scenario("DoIfBenchmark") .doIf(scenarioProperty, "pv") { exec(http("pv").get("/pv")) }
  14. 14. ある割合ごとにリクエストをする • / を 50%、/foo を 20%、/bar を 30% ずつリクエスト する val scn = scenario("RandomBenchmark")
 .randomSwitch( 50.0 -> exec(http("top").get("/")), 20.0 -> exec(http("foo").get("/foo")), 30.0 -> exec(http("bar").get("/bar")) )
  15. 15. リクエストに動的にクッキーを付与する • / のクッキー uid を /cookie へ付与する val scn = scenario("CookieBenchmark")
 .exec(http("top") .get("/") .check(headerRegex("Set-Cookie", "uid=(.*); Expires=.*; Domain=.*; Path=.*").saveAs("uid"))) .exec(addCookie(Cookie("uid", "${uid}"))) .exec(http("cookie").get("/"))
  16. 16. リクエストに動的にクッキーを付与する • /baz へのリクエストは "bar UA" にする val userAgent = Map("User-Agent" -> "bar UA") val scn = scenario("UABenchmark")
 .exec(http("baz") .get("/baz") .headers(userAgent) )
  17. 17. ステータスコード 303 はステータス OK とする • /redirect は 303 を返して、リダイレクトはしない val scn = scenario("RedirectBenchmark")
 .exec(http("top") .get("/redirect") .disableFollowRedirect .check(status.is(303)) )
  18. 18. この他は公式ドキュメントをどうぞ
 http://gatling.io/docs/2.0.0-RC5/general/ index.html
  19. 19. Enjoy!!!

×