ストレステストに行く
序章
go-stress-testing は、go 言語によって実装されたストレス テスト ツールです。ソース コードはオープン ソースで、二次開発をサポートし、http、webSocket リクエスト、およびプライベート RPC 呼び出しをストレス テストできます。コルーチンを使用して単一ユーザーをシミュレートします。 CPUリソースをより効率的に使用できるようになります
手順
- ダウンロードリンク
- プロジェクトのソース コードを $GOPATH ディレクトリに複製する必要があることに注意してください。
- Macコンピュータは次のようにダウンロードします
- $GOPATH ディレクトリに置きます
-
- 力を与える
chmod +x go-stress-testing-mac
- 力を与える
./go-stress-testing-mac
使用状況を表示するには、このディレクトリで実行します
Baidu ページのテスト リクエスト
./go-stress-testing-mac -c 1 -n 100 -u https://www.baidu.com/
- とても使いやすく、二次開発にも対応しています
メリットのまとめ
- 使い方は簡単で、簡単なコマンド ライン パラメーターを設定するだけでストレス テストを完了できます。
- HTTP、TCP、UDP などの複数のプロトコルがサポートされています。
- 生成されたレポートは直感的で分析が簡単です。
欠点のまとめ
- 機能は比較的少なく、多くの高度な機能はサポートされていません。
フォーティオ
序章
Fortio は、指定された 1 秒あたりのクエリ数 (qps) で実行され、実行時間のヒストグラムを記録することでパーセンテージを計算します。(例: p99、応答時間は、リクエストの 99% がこの数値未満であることを意味します)。Fortio は、設定された期間、固定回数の呼び出し、または中断されるまでの実行をサポートします。
また、Fortio は非常に高速で軽量 (Docker イメージはわずか 4MB、依存関係は最小限)、二次開発をサポートし、組み込み Go ライブラリをサポートし、コマンドライン ツールやサーバー プロセスの形式で使用できます。そのサービスには、実行をトリガーし、結果のグラフィカル表現を表示するためのシンプルな Web UI と REST API (個々のレイテンシ グラフと複数の結果比較の最小値、最大値、平均値、qps およびパーセンタイル プロットを含む) および (httpbin のような) サーバー側機能が含まれています
。デバッグとテストに役立ちます: エコーのリクエスト (リクエスト ヘッダーを含む)、確率分布による遅延コードまたはエラー コードの追加、TCP エコー、TCP プロキシ、http ファンアウト/スキャッター、プロキシ サーバーの収集、GRPC エコー/ヘルス、http など。
使用してインストールする
- go の最小バージョンは 1.18 です
- インストールコマンド
go install fortio.org/fortio@latest
- brew を使用してインストールすることもできます
brew install fortio
- brew を使用してインストールすることもできます
- 起動
fortio server
- 特に、このコマンドは $GOPATH ディレクトリで実行する必要があります。
遭遇した問題
- MAC システムでは、
go install fortio.org/fortio@latest
インストールをfortio
使用してfortio
$GOPATH/bin ディレクトリにインストールします。 - これを
bin
ディレクトリと同じレベルに移動し、 で実行すると./fortio server
、次の出力が表示されます。 - UIページは以下のように表示されます
テスト走行
- 生成された結果
メリットのまとめ
- UIインターフェイスによる簡単な操作
- 活発なコミュニティ、注目度の高さ、品質の保証
- 二次開発にも対応
- 分散ストレス テスト、永続的接続テスト、TLS 暗号化のサポートなど、さまざまな高度な機能をサポートします。
- 使いやすく、視覚的なインターフェイスを提供し、使用と分析が簡単です。
欠点のまとめ
- 使用の敷居が比較的高く、すべての英語を習得して使用するには時間がかかります
- 一部の複雑なシナリオでは、実現するためにアノテーションを記述する必要があります。
ベジータ
序章
ベジータ は、一定のリクエスト レートの HTTP サービスのニーズに基づいて構築された汎用 HTTP 負荷テスト ツールです。コマンドラインとしてもライブラリとしても利用可能です。
使用してインストールする
インストール
brew update && brew install vegeta
- コマンドの実行でエラーが発生する
- 実行する
brew cleanup
かウィンドウを閉じるか、インストールする前にしばらく待ってください。
- go を使用してインストールする
go install github.com/tsenart/vegeta@latest
- 以下の通り、インストールは成功です
テスト使用
- インストールが成功すると、
$GOPATH/bin
ダウンロードしたバイナリ ファイルがディレクトリに表示されます。 $GOPATH/bin
ディレクトリに入って実行すると、./vegeta
コマンドラインのヘルプ情報が表示されます。
- 使用手順
- テストスクリプトを書く
- test.txt など、テスト対象のすべてのリクエストを含むファイルを書き込みます。各リクエストは 1 行を占め、形式は次のとおりです。
请求方法 URI1
请求方法 URL2
{"post请求": "请求参数"}
- テストを実行する
echo "GET [https://www.baidu.com/"](https://www.baidu.com/) | vegeta attack -duration=5s | tee results.bin | vegeta report
- 説明:
[https://www.baidu.com/](https://www.baidu.com/)
5 秒間の GET リクエストを開始し、結果を results.bin ファイルに記録して、リクエストに関するレポートを表示します。 - テスト結果は次のとおりです
- 現在のディレクトリに生成された results.bin ファイルが表示されます。
メリットのまとめ
- 高い柔軟性を持ち、シンプルな設定ファイルでさまざまな複雑なシナリオのストレステストを実現できます。
- HTTP/1.1、HTTP/2、TCP プロトコルをサポートします。
- 生成されたレポートは詳細で分析が簡単です。
欠点のまとめ
- 学習曲線は急勾配であり、一定の学習コストが必要です。
- 視覚的なインターフェースがなく、あまり使いやすくありません。
要約する
どのストレス テスト ツールを選択するかは、特定のニーズとシナリオによって異なります。さまざまな高度な機能や分散ストレス テストをサポートする必要がある場合は、fortio の方が適しています。より柔軟なテスト ツールが必要な場合は vegeta を選択でき、要件が比較的単純な場合は go-stress-testing を選択できます。
開花を終える
- 幸せな人生を祈っています
参考
https://github.com/link1st/go-stress-testing
https://github.com/fortio/fortio
https://github.com/tsenart/vegeta