【ロカスト】

Locust とは?

💡 イナゴの大群のようにリクエストを送り込む負荷テストツール
📌 このページのポイント
Locust 分散テストの構成 WebUI(ブラウザ) リアルタイム監視・操作 Master ノード テスト統括・結果集約 Worker 1 500 仮想ユーザー Python + gevent Worker 2 500 仮想ユーザー Python + gevent Worker N 500 仮想ユーザー Python + gevent
Locust の分散テスト構成
ひよこ ひよこ

Locustってどんなツールなの?

ペンギン先生 ペンギン先生

Pythonでテストシナリオを書いて、Webサービスに大量のアクセスを送る負荷テストツールだよ。イナゴの大群がサーバーに押し寄せるイメージだね

ひよこ ひよこ

Pythonで書けるのは便利そうだね!どんなコードを書くの?

ペンギン先生 ペンギン先生

HttpUserというクラスを継承して、@taskデコレータでユーザーの行動パターンを定義するんだ。たとえば「トップページにアクセスして、検索して、商品ページを見る」みたいな流れをPythonコードで書けるよ

ひよこ ひよこ

WebUIがあるって聞いたけど、どんな感じなの?

ペンギン先生 ペンギン先生

ブラウザでlocustを開くと、仮想ユーザー数やリクエスト/秒を設定してテストを開始できるんだ。実行中はレスポンスタイムやエラー率のグラフがリアルタイムで更新されるから、結果を見ながら負荷を調整できるよ

ひよこ ひよこ

k6Gatlingと比べてどういうときにLocustを選ぶの?

ペンギン先生 ペンギン先生

チームがPythonに慣れているなら断然Locustだね。Pythonライブラリをそのまま使えるから、DBに接続してテストデータを準備したり、複雑なビジネスロジックをテストに組み込んだりするのが簡単なんだ

ひよこ ひよこ

大量のアクセスをシミュレートするときはどうするの?

ペンギン先生 ペンギン先生

分散モードを使うと、1台のマスターと複数のワーカーマシンで協調してテストできるよ。内部ではgeventというライブラリでコルーチンベースの軽量な並行処理を実現しているから、1プロセスでも数千のユーザーを同時にシミュレートできるんだ。Kubernetes上でワーカーをスケールアウトする構成も人気があるよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Locust」って出てきたら「Pythonで書ける負荷テストツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Locust」 = イナゴ(バッタの一種)
💬 イナゴの大群が農作物に襲いかかるように、大量のリクエストでサーバーに負荷をかけるイメージから名付けられたよ
← 用語集にもどる