技術メモブログ

技術ネタの備忘録的なブログ。技術ネタ以外にも気になったことをつらつら書きます

負荷試験ツール Gatling を使ってみた

JMeter なんかよりも良いというので使ってみた

 
Gatling 自体は Scala で、シナリオを記述する
ブラウザ操作をシナリオとして記憶させて、テストすることも可能

公式はここ

公式のクイックスタートは操作による説明

 
こちらのサイトは、クイックスタートを実施されている
負荷テストツールGatlingを触ってみた - 絶品ゆどうふのタレ

 
純粋に API のレスポンスを計測するならコードを書いたほうがよさ気

 
以下動かしてみたサンプルコード
このコードはこちらのサイトを参考にさせて貰いました

import io.gatling.core.Predef._
import io.gatling.http.Predef._

import scala.concurrent.duration._

class Sample extends Simulation {
  val httpProtocol =
    http
      .baseURL("http://localhost:8080")
      .acceptCharsetHeader("ISO-8859-1,utf-8;q=0.7,*;q=0.7")
      .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8")
      .acceptEncodingHeader("gzip, deflate")
      .acceptLanguageHeader("fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3")
      .disableFollowRedirect

  val scn =
    scenario("Getting Started Scenario")
      .exec {
        http("batchlet")
          .get("/JBatch/batchlet")
          .check(status.is(200))
      }

  setUp( scn.inject(constantUsersPerSec(1) during(10 seconds)).protocols(httpProtocol) )

}

ローカルホストで動かしてる JAX-RS のサービスにアクセスするだけ
一人のユーザが 10 秒間アクセスするってもの
こんな結果が出力される

 
リクエストの所要時間の大まかな分布 f:id:mtkj:20160110002317j:plain

 
何人のユーザがその時間アクティブ、所要時間の細かい分布 f:id:mtkj:20160110002329j:plain

 
レスポンスタイムと、秒毎のリクエストユーザ数 f:id:mtkj:20160110002338j:plain

 
秒毎のレスポンス数 f:id:mtkj:20160110002410j:plain