負荷試験のためにLocust試してみた

みなさま、初めまして。
システム開発部のK.Mです。

今回はサーバアプリケーションに対する負荷試験をする時に使用するツールの1つであるLocustを使用手順や使用時に発生した諸々をご紹介していきます。

  • なぜLocust?
  • 負荷試験とは?
  • Locustインストール手順
  • Locust実行手順
  • Locustのシナリオ書き方例
  • Dokerを使ったMaster-Slave設定による沢山の負荷をかける手順
    • ローカルでdocker動かしてみる
    • GKE環境への構築と実施
  • Locustのアップデート
    • GKE部分の差分
  • まとめ
  • 最後に

なぜLocust?

負荷試験で使用するツールとして真っ先に名前が出てくるのは、Apache JMeterになります。

しかし、このJMeterですが、

  • テスト用のシナリオを作る時にUI上でポチポチ選択することで時間が思ったより取られる。
    • GUIで多機能だが、どの項目が何を表すのかが、分かりにくい点がある。
  • テスト用のシナリオがXMLでも用意出来るが、こちらも分かりにくいXMLを読み解いて書いたりするのに時間が取られる。
  • リクエストやレスポンス部分の暗号化とかセキュリティ用の機能があると、その機能をOFFにしないとテストがやりにくい。
    • リクエストとレスポンスを独自に暗号化している案件で、JMeterに暗号化・複合化を入れ込む方法が無く、一時的に暗号化OFFにして試験をしたこともありました。

等々、色々と使う上での難点がありました。

JMeterで難点になっている部分を解消するために、テスト用シナリオをプログラムで書けるツールを探しているところ、pythonで書けるLocustを発見したので使ってみることにしました。

Locustを使う以前は、k6というjsベースでシナリオを書けるツールやvegetaというgoベースでシナリオを書けるツールも使ってみましたが、それぞれ一長一短ありますが現時点ではLocustが上記に挙げたJMeterの難点が無く、使いやすいと個人的には感じています。

続きを読む