LoginSignup
2
0

More than 1 year has passed since last update.

Webサービスのパフォーマンステスト、負荷テストツール紹介

Last updated at Posted at 2021-06-10

概要

Webサービスのパフォーマンステスト(性能テスト)や負荷テスト(ストレステスト、ロードテスト)で大量トランザクションを流して、そのベンチマークをとったりするツールが世の中には多くあります。
最初に思いつくのはabですが、他のツールと比較検討して使いたいですよね。
ここで紹介するツールの詳細な特徴や比較検討はしませんが、他のツールを知るための足がかりとして利用いただければ幸いです。

ツール一覧

  • ab
    • https://httpd.apache.org/docs/2.4/programs/ab.html
    • It is designed to give you an impression of how your current Apache installation performs
    • MacやLinuxに最初から入ってる
    • コマンドラインのオプションで手軽に指定して使える基本中の基本のツール
  • Jmeter
    • https://jmeter.apache.org/
    • 100% pure Java application designed to load test functional behavior and measure performance
    • JREが必要
    • GUI、CLI共にあり
    • abよりも非常にリッチなシナリオ実行が可能
  • Siege
  • wrk, wrk2
    • https://github.com/wg/wrk and https://github.com/giltene/wrk2
    • wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU
    • wrk2 is wrk modifed to produce a constant throughput load, and accurate latency details to the high 9s (i.e. can produce accurate 99.9999%'ile when run long enough)
    • Cで書かれたOSSで軽くて速い。Luaによって拡張することが可能。
    • 使い方はabに似てるが、Luaを使って拡張しやすいことが特徴的で、Luaになれたチームなら適しているかも。
  • Gatling
    • https://gatling.io/
    • It is designed for ease of use, maintainability and high performance.
    • JDKとScalaが必要、でもIntelliJ IDEAとEclipseからシミュレーション内容を編集可能とのこと
    • シナリオはScalaベースで書く必要があるので、Scala言語で書いたリポジトリに一緒にコミットしておけるのはいいかも
  • LOCUST
    • https://locust.io/
    • Locust is an easy to use, scriptable and scalable performance testing tool.
    • Pythonで記述する
  • Vegeta
    • https://github.com/tsenart/vegeta
    • Vegeta is a versatile HTTP load testing tool built out of a need to drill HTTP services with a constant request rate.
    • Macでbrew installか、go getでインストール
    • コマンドと豊富なコマンドラインオプションで、コンスタントなリクエストを送信するのに向いてそう。Goプログラムに組み込み可能。
  • k6
    • https://k6.io/
    • k6 is a developer-centric, free and open-source load testing tool built for making performance testing a productive and enjoyable experience.
    • JavaScriptでテストスクリプトが書ける
    • abやJmeterのような古き良きロードテストツールとは違い、SREの活動の中で使われるようなツールとして開発されているのが特徴
  • Artillery
    • https://artillery.io/
    • Artillery is a modern load testing and smoke testing solution designed for cross-functional teams that run microservice-based systems on AWS and rely on CI/CD to ship at high velocity
    • 主にAPIサーバなどのバックエンドサービス向けのツールで、フロントエンドサービス向けではないのが特徴的
    • k6同様、DevOpsやSRE文脈で利用されることを目指すツールです
    • 設定とシナリオだけの単純な構成でYAMLで記述できる
  • WBench
    • https://github.com/desktoppr/wbench
    • WBench is a tool that uses the HTML5 performance timing API to benchmark end user load times for websites. It simulates users visiting your website for the first time, with nothing of your site cached.
    • Ruby gemとして導入する
    • 実際にGoogle Chromeを使うなどして、例えばDOMContentLoadedイベントまでの時間など、主にターンアラウンドタイム測定に適したツール。軽い検証ならば、Google ChromeのNetworkタブ等で済むかもしれないが、、、
  • 自作
    • HTTPリクエスト送信自体は取り扱いが容易なので、自作されるケースも有るかと思います。ただ、その際はツールが動くクライアント側がボトルネックになる可能性があるので要注意です。
    • スケールフリーで自作するには、AWS LambdaやGCP Cloud Functionを使ってシステムをつくってしまうパターンもあるかも知れません
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0