Skip to content

Instantly share code, notes, and snippets.

@bilzard
Last active November 7, 2019 03:42
Show Gist options
  • Save bilzard/10672e58ed7f502709117fe0953f02fc to your computer and use it in GitHub Desktop.
Save bilzard/10672e58ed7f502709117fe0953f02fc to your computer and use it in GitHub Desktop.
Gatling について

Gatlingについて

  • 環境構築
    • Open JDK 8
    • Scala 2.12
      • 2.11, 2.13 では動作しない
      • Open JDK でも動作するの?
        • => 動作した
    • sdkman というツールを使うとバージョン指定してインストールするのが簡単
  • Gatling 使ってみる
    • 実行環境
      • Bundle
        • とりあえずすぐに使えるやつ
      • Build Tool
        • SBT
        • Gradle
      • IDE
        • IntelliJ
        • Eclipse
    • recorder.sh
      • 手動の操作をコードに記録してくれるツール
    • gatling.sh
      • シナリオを実行するツール
  • 基本的な概念
    • 仮想ユーザ
      • ユーザごとの並行処理を Thread でなく message (coroutine ?) で実行している
    • Senario
      • テストシナリオ
      • Scala の DSL で記述する
    • Simulation
      • 負荷のかけ方を調節する
      • 負荷モデル
        • Gatling はデフォルトで open model を採用している
        • Closed model
          • 1人のユーザが大量のアクセスを発行する
          • Keep alive が有効な前提
        • Open model
          • 大量のユーザが数回のアクセスを発行する
          • 1ユーザごとに独立したリソース空間が割り当てられる
          • メモリ、ポートなどのリソースが枯渇しないように注意する必要がある
      • リソース枯渇する場合は?
        • 負荷ツールの実行ノードのスケールアウト
        • テストモデルの再検討(ab / wrk を使う)
        • Gatling の設定を変更し、仮想ユーザ間でコネクションプールを再利用する
    • Session
      • Gatling のクライアントセッション
        • サーバ側のセッションではなく、仮想ユーザ固有の永続化データ
      • Expression Language (EL) か Session API から参照する
      • Expression Language (EL)
        • Gatling の Session データに簡単に参照するためのテンプレート言語みたいなもの。 ${myValue} みたいな感じで Session データを動的に取得できる
    • Feeder
      • Map / Iterator
      • Array / IndexedSeq
      • CSV / JSON / JDBC / Redis / Sitemap
    • Checks
      • Responseデータを解析してデータを取得する
    • Assersions
      • リクエストの失敗を定義するためのもの?
    • Reports
      • 結果のレポート
      • HTMLで出力される
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment