web-dev-qa-db-ja.com

siege vs wrkを使用した負荷テストとベンチマーク

負荷テストとベンチマークを行うのに役立つツールを探していました。次のようなカップルを見つけました: https://github.com/wg/wrkhttp://www.joedog.org/siege-home/https://github.com/rakyll/boom 。誰かがこれらのツールの経験があり、これらのツールの長所と短所のフィードバックがあるかどうか疑問に思っています。私の負荷ストレスには、DELETE、PUT、GET、POST ...ヘッダーを使用したさまざまなテストケースが含まれます

ありがとう

20
Nam Nguyen

私はwrkとsiegeを使用しましたが、siegeは本当に使いやすいツールですが、siegeでDELETEまたはPUTをテストできるかどうかはわかりません。

Wrkは提供されたluaスクリプトを使用してリクエストを生成できるため、DELETEとPUTは問題になりません。 AND wrkはNGINX静的ファイルサーバーを圧倒するツールなので、汎用の負荷テストには十分高速だと思います。

@Direviusが提案したboomやYandex.tankを使用したことはありません。基本的に、wrkは十分にシンプルで、ニーズに合っているからです。しかし、JMeterは私には複雑すぎます。

14
tdihp

負荷テストおよびベンチマークツール

アルファベット順に記載されています。

ab :Cで書かれた低速でシングルスレッド

apib :ApacheBench(ab)のほとんどの機能は、Cで記述された、より最新の代替として設計されています。

baloo :Go(golang)で記述された表現力豊かなエンドツーエンドのHTTP APIテストが簡単に

baton :Go(golang)で記述されたHTTP負荷テスト

bombardier :Go(golang)で記述された高速クロスプラットフォームHTTPベンチマークツール

curl-loader :さまざまなアプリケーションサービスのパフォーマンスロードとトラフィック生成、Cで記述

drill :Rustで記述されたAnsible構文に触発されたHTTP負荷テストアプリケーション

fasthttploader :fasthttpライブラリに基づく自動調整とチャートを使用したベンチマーク(ちょっとab)、Go(golang)で書き込みます

fortio :負荷テストライブラリとコマンドラインツールおよびWebUI。設定された1秒あたりのクエリ負荷を指定し、レイテンシヒストグラムやその他の有用な統計を記録し、Go(golang)で書き込むことができます。

gatling :Scala、Akka、Nettyに基づく高性能負荷テストフレームワーク、Scalaでの書き込み

go-wrk :優れたwrkツール(wg/wrk)に基づいた精神に基づいたHTTPベンチマークツール、Go(golang)で記述

goad :AWS Lambdaを使用した高度に分散された負荷テストツール、Go(golang)で記述

gobench :HTTP/HTTPS負荷テストおよびベンチマークツール、Go(golang)で記述

gohttpbench :マルチコアCPUで実行されるabのようなベンチマークツール、Goで書き込む(golang)

hey :HTTP(S)ロードジェネレーター、ApacheBench(ab)の代替、以前はrakyll/boomとして知られていた、Go(golang)で記述

htstress :C/Linuxで記述されたマルチスレッドの高負荷bechmarkingサービス(> 5K rps)

httperf :Cで記述された、設定が難しく、低速でシングルスレッド

inundator :C/Linuxで記述されたシンプルで高スループットのHTTPフラッドプログラム

jmeter :ApacheJMeter™、静的リソースと動的リソースの両方でテストパフォーマンスをロードするように設計された純粋なアプリケーションで、Javaで記述されています

k6 :Go(golang)で記述されたHTTP/1.1、HTTP/2.0およびWebSocketをサポートするES6 JSでスクリプト可能な最新の負荷テストツール

locust :リアルタイムWeb UIを備えた使いやすい分散負荷テストツール。同時ユーザーの群れをシミュレートします。各ユーザーの動作は、pythonコード。Pythonで記述されています。

mgun :Go(golang)で記述されたHTTPサーバーの負荷テスト用の最新ツール

pounce :イベントが発生しますが、結果は変動します。Cで記述されたhtstressよりも高速な場合があります

siege :低速でシングルスレッド、Cで記述

slapper :Go(golang)で記述された、リクエストタイミングのリアルタイム更新ヒストグラムを備えたシンプルな負荷テストツール

slow_cooker :ライフサイクルの問題と長時間のテストに重点を置いたロードテスター、Go(golang)で記述された、長期間にわたって予測可能な負荷と並行性レベルを備えたサービス

sniper :Go(golang)で記述された強力で高性能なhttpロードテスター

tsung :Erlangで記述されたIPベースのクライアント/サーバーアプリケーションHTTP、WebDAV、SOAP、PostgreSQL、MySQL、LDAP、およびJabber/XMPPサーバーのスケーラビリティとパフォーマンスをテストするために、ストレスユーザーをシミュレートします

vegeta :Go(golang)で記述されたHTTP負荷テストツールとライブラリ

weighttp :マルチスレッドですが、キープアライブなしのhtstressよりも低速で、Cで記述されています

wrk :マルチスレッド、C/Luaで記述

wrk2 :一定のスループット、wrkの正しいレイテンシ記録バリアント、C/Luaで記述

yandex-tank :Python/C | C++ | Asm(ファントム)で記述された負荷とパフォーマンスのベンチマークツール

説明は ここ からです。

35
Denis Rasulev

私はこれらのいずれも使用したことがありませんが、wrkについていくつかの肯定的な意見を聞きました。

非常に人気のある Jmeter や、私たちが使用するツールである Yandex.tank も試してみるべきだと思います。ほとんどのWebサービスのLT部門で。

2
Direvius