Go言語アプリケーションをロードテストする方法

王林
リリース: 2024-05-08 09:48:01
オリジナル
731 人が閲覧しました

wrk を使用して Go アプリケーションをロードテストする方法: Go と wrk ツールをインストールします。例として Go HTTP API を作成します。負荷テストには wrk を使用します: wrk -t 100 -c 1000 -d 30s http://localhost:8080/health 解釈結果: 平均レイテンシー、1 秒あたりのリクエスト数、99% レイテンシー。

Go言語アプリケーションをロードテストする方法

Go アプリケーションで負荷テストを行う方法

はじめに

負荷テストは、多数の同時リクエストを処理するときにアプリケーションのパフォーマンスを評価するために不可欠です。この記事では、Go アプリケーションで負荷テストを実行する方法を詳しく説明し、実際のケースを使用して説明します。

ツール

負荷テストには次のツールが必要です:

  • go: Go言語(インストールされています) go:Go 语言(已安装)
  • wrk
  • wrk: HTTP負荷テストツール

実践的なケース: HTTP API のベンチマーク

単純な Go HTTP API を例として見てみましょう。アプリケーションのステータスに関する JSON 応答を返す「/health」エンドポイントを提供します。

1. HTTP API を作成します

package main

import (
    "fmt"
    "net/http"
)

// healthEndpoint 处理 "/health" 请求。
func healthEndpoint(w http.ResponseWriter, r *http.Request) {
    // 返回应用程序状态。
    fmt.Fprintf(w, `{ "status": "healthy" }`)
}

func main() {
    // 注册 "/health" 处理程序。
    http.HandleFunc("/health", healthEndpoint)

    // 监听并服务 HTTP 请求。
    http.ListenAndServe(":8080", nil)
}
ログイン後にコピー
2. 負荷テストに wrk を使用します

wrk -t 100 -c 1000 -d 30s http://localhost:8080/health
ログイン後にコピー

このコマンドは、100 個の同時スレッドを作成し、30 秒で 1000 個のリクエストを実行します。

3. 結果の解釈

出力は次のようになります:

Running 30s test @ http://localhost:8080/health
  100 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    39.25ms   15.28ms   148ms    67.72%
    Req/Sec    32.82k   21.70k   80.00k    70.18%
  Latency Distribution
     50%   34.11ms
     75%   42.99ms
     90%   54.76ms
     99%   100.87ms
  Req/Sec Distribution
     50%   28.02k
     75%   32.41k
     90%   59.89k
     99%   75.01k
Total: 984141 requests in 30.01s, 116.53MB read
Requests/sec:   32795.55
Transfer/sec:      4.01MB
ログイン後にコピー

この出力は次を示します:
  • 平均レイテンシー:
  • 39.25 ミリ秒
  • 1 秒あたりのリクエスト数 (QPS):
  • 32.82k
  • 9 9% レイテンシー:
  • 100.87 ms

結論

このチュートリアルでは、Go アプリケーションで wrk を使用して負荷テストを実行する方法を示します。負荷テストは、アプリケーションのパフォーマンスを評価し、潜在的なボトルネックを特定するために重要です。 🎜

以上がGo言語アプリケーションをロードテストする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート