Repolode
bojand

bojand/ghz

gRPCサービスのベンチマークや負荷テストに使えるCLIツール。並行数、リクエストレート、出力形式を設定できます。

スター
3,359
フォーク
284
未解決の Issue
101
最終コミット
7 日前

これは何?

ghzは、gRPCサービスのパフォーマンスを測定するCLIツール兼Goパッケージです。ホストと完全修飾メソッド名を指定し、.protoファイルまたはコンパイル済みのprotosetを渡すと、リクエストを送信しながらレイテンシとスループットを記録します。

負荷は、一定のリクエストレート、固定数の並行ワーカー、または時間の経過とともにRPSや並行数を増減させるステップ/ライン形式のスケジュールで設定できます。テストはリクエスト数または実行時間で制限でき、メッセージ間隔やストリームの存続時間を指定してストリーミング呼び出しを実行することもできます。TLS、クライアント証明書、メタデータ、gzip圧縮も設定可能です。

結果は、サマリー、整形テキスト、JSON、CSV、HTML、InfluxDBのline形式で出力できます。テスト設定はJSONまたはTOMLの設定ファイルにも保存できます。

主な機能

  • 01RPSや並行数を一定に保つほか、ステップ形式やライン形式で段階的に変化させる負荷スケジュール。
  • 02protoファイルまたはprotosetを使った、UnaryおよびストリーミングのgRPC呼び出しに対応。
  • 03TLS、クライアント証明書、カスタムauthority、gzip圧縮を設定可能。
  • 04サマリー、整形テキスト、JSON、CSV、HTML、InfluxDB形式で出力。
  • 05CLIとしても、Goパッケージとしてインポートしても利用可能。

ユースケース

  • リリース前にgRPCマイクロサービスの負荷テストを行う。
  • サービスのレイテンシが悪化し始めるリクエストレートを特定する。
  • CIパイプラインでサービスのバージョン間のパフォーマンスを比較する。
  • TLSまたは圧縮を有効にした状態でgRPCエンドポイントのベンチマークを行う。

クイックスタート

  1. 1

    Homebrewでインストール

    brew install ghz
  2. 2

    またはGo(1.23以降)でインストール

    go install github.com/bojand/ghz/cmd/ghz@latest
  3. 3

    protoファイルとホストを指定して、gRPCサーバーに負荷テストを実行

使う前に知っておきたいこと

  • ドキュメントはリポジトリ内ではなく、外部サイトのghz.shで公開されています。

収録されている特集

トピック

よくある質問

ghz とは?
gRPCサービスのベンチマークや負荷テストに使えるCLIツール。並行数、リクエストレート、出力形式を設定できます。 ghzは、gRPCサービスのパフォーマンスを測定するCLIツール兼Goパッケージです。ホストと完全修飾メソッド名を指定し、.protoファイルまたはコンパイル済みのprotosetを渡すと、リクエストを送信しながらレイテンシとスループットを記録します。
ghz は無料で使えますか?ライセンスは?
ghz は Apache-2.0 ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
ghz は今もメンテナンスされていますか?
活発にメンテナンス中。ghz の最終コミットは 2026年11月1日 です。
ghz は何に使えますか?
リリース前にgRPCマイクロサービスの負荷テストを行う。 サービスのレイテンシが悪化し始めるリクエストレートを特定する。 CIパイプラインでサービスのバージョン間のパフォーマンスを比較する。 TLSまたは圧縮を有効にした状態でgRPCエンドポイントのベンチマークを行う。
ghz のインストール方法は?
Homebrewでインストール: brew install ghz またはGo(1.23以降)でインストール: go install github.com/bojand/ghz/cmd/ghz@latest protoファイルとホストを指定して、gRPCサーバーに負荷テストを実行
ghz はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/bojand/ghz

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト