Locustで負荷テストしてみた。95%ileとスパイクに注目した観察ログ

応答時間グラフの緑色ラインが急上昇している様子。背景はサーバールーム風。 Software Test Learning Log
Locustで負荷テストしてみた。95%ileとスパイクに注目した観察ログ

はじめに

Locustを触ってみました。触ろうと思ったきっかけは、軽く負荷テストの感覚を掴んでおきたかったからです。

ユーザー視点で見たとき、応答速度の遅さって気になるポイントですよね。それを数値で捉える手段として「Locustいいかも」と思ったのが出発点でした。

Locust.io
An open source load testing tool. Define user behaviour with Python code, and swarm your system with millions of simulta...

試したこと

入門編として、以下の構成でLocustを使ってみました。

  • GETリクエストのみで負荷をかける
  • コードは最小限。GUIでの観察がメイン
  • GUI画面を確認し、指標を読み取る

実行環境と設定

使用コード

wait_time でリクエストをランダムに設定します。

locustfile.py

※技術ブログと違いコードスニペットの見栄えが悪いので、スクショを貼ってます。

コマンド実行

locust -f locustfile.py --host=https://httpbin.org

Ramp-up設定

  • ユーザー数:100
  • spawn rate:0.5s

GUIの見方と観察ポイント

Statistics

Statisticsで平均応答時間や失敗数を確認することができます。

Statistics

Charts

ChartsでRPSの増加や応答時間を見ることができます。

今回の観察で注目したのは、応答時間のスパイク(急上昇)です。特に 95%ile(上位5%の遅いリクエストの目安)が1500ms以上になる場面がありました。

Charts

Failures

Failuresでは、HTTP 502 Bad Gateway エラーが観測されました。これは、一部のリクエストで処理が追いつかずに応答不能となった可能性があります。

Failures

ログで見る方法

リクエストの詳細を確認する場合は、ログを活用します。
LocustのGUIでは最大応答時間までしか見ることができないため、一つ一つの応答時間を見たいときは、コード内で print() を使ってログ出力する方法もあります。

感想

数値で見る負荷の可視化が楽しいと感じました。

コードを増やさずとも「負荷によるシステムの反応」が見えたり、パーセンタイルがキーとなっている点も面白いですね。

まとめ

今回はGETだけ観察するフェーズでしたが、POSTや複数タスク等色々試してみたいと思います。

▶ 実行コードは以下のリポジトリにて公開しています。

GitHub - hamltail/python-playground: 🐍 Python learning playground with virtual environments, pip & Git essentials
🐍 Python learning playground with virtual environments, pip & Git essentials - hamltail/python-playground
タイトルとURLをコピーしました