ホームページ > バックエンド開発 > Golang > Golang 学習 Web アプリケーションのパフォーマンス テストの実践

Golang 学習 Web アプリケーションのパフォーマンス テストの実践

PHPz
リリース: 2023-06-24 11:18:10
オリジナル
1141 人が閲覧しました

Golang 学習 Web アプリケーションのパフォーマンス テストの実践

インターネット時代の発展に伴い、Web アプリケーションの重要性がますます高まっており、本番環境の Web アプリケーションには高いパフォーマンスとパフォーマンスが求められます。ユーザーのニーズを満たす同時実行機能。 Web アプリケーションの高いパフォーマンスと高い同時実行性を確保したい場合は、パフォーマンス テストを実施する必要があります。

この記事では、Go 言語を使用して Web アプリケーションのパフォーマンス テストを実行する方法を紹介し、読者に実践的な経験を提供します。

1. 準備

まず、Go 言語開発環境と、この種のアプリケーション開発によく使用されるフレームワークをインストールする必要があります。 Web アプリケーション開発には、Gin フレームワークを使用することをお勧めします。

Go 言語環境と Jin フレームワークをインストールした後、いくつかのパフォーマンス テスト ツールをインストールする必要があります。一般的に使用されるツールには、ApacheBench (ab)、wrk などが含まれます。

2. パフォーマンス テスト

パフォーマンス テスト ツールを使用する前に、Web アプリケーションを起動する必要があります。以下は、Gin フレームワークを使用して構築された Web アプリケーションのサンプル コードです。

package main

import "github.com/gin-gonic/gin"

func main() {
    r := gin.Default()
    r.GET("/hello", func(c *gin.Context) {
        c.JSON(200, gin.H{
            "message": "Hello world!",
        })
    })
    r.Run() // listen and serve on 0.0.0.0:8080
}
ログイン後にコピー

この単純な Web アプリケーションは、JSON 形式で「Hello world!」情報を返すための GET メソッドのみを提供します。

次に、ApacheBench ツールを使用してパフォーマンス テストを実施します。 ApacheBench は、Web サーバーのストレス テストを迅速かつ簡単に行うために Apache Software Foundation によって開発されたツールです。コマンド ラインで、次のコマンドを使用してテストできます。

ab -n 1000 -c 100 http://localhost:8080/hello
ログイン後にコピー

このうち、-n はリクエストの数を表し、-c は同時実行数を表します。http://localhost:8080/hello はWeb アプリケーションのアドレスの番号。

このコマンドを実行すると、ApacheBench が次の結果を出力することがわかります。

Server Software:        
Server Hostname:        localhost
Server Port:            8080

Document Path:          /hello
Document Length:        26 bytes

Concurrency Level:      100
Time taken for tests:   0.431 seconds
Complete requests:      1000
Failed requests:        0
Total transferred:      190000 bytes
HTML transferred:       26000 bytes
Requests per second:    2321.25 [#/sec] (mean)
Time per request:       43.128 [ms] (mean)
Time per request:       0.431 [ms] (mean, across all concurrent requests)
Transfer rate:          431.51 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       2
Processing:     8   42  11.1     40      71
Waiting:        8   42  10.8     40      71
Total:          8   42  11.1     40      72

Percentage of the requests served within a certain time (ms)
  50%     40
  66%     49
  75%     53
  80%     55
  90%     60
  95%     68
  98%     71
  99%     72
 100%     72 (longest request)
ログイン後にコピー

このうち、各インジケーターの意味は次のとおりです。

  • サーバー ソフトウェア: サーバーのソフトウェア名。
  • サーバーのホスト名: サーバーのホスト名。
  • サーバー ポート: サーバーのポート番号。
  • ドキュメント パス: 要求されたドキュメント パス。
  • ドキュメントの長さ: 要求されたドキュメントの長さ。
  • 同時実行レベル: 同時実行の数。
  • テストにかかった時間: テストにかかった時間。
  • 完了したリクエスト: 完了したリクエストの数。
  • 失敗したリクエスト: 失敗したリクエストの数。
  • 合計転送量: 転送されたデータの量。
  • 転送されたHTML: 転送されたHTMLデータの量。
  • 1 秒あたりのリクエスト: 1 秒あたりのリクエストの数。
  • リクエストあたりの時間: 各リクエストにかかった時間。
  • リクエストごとの時間: 各リクエストにかかる平均時間 (すべての同時リクエストを含む)。
  • 転送速度: 転送速度。

その中で、最も重要な指標は 1 秒あたりのリクエスト数です。サーバーの処理能力を表し、数値が高いほどサーバーのパフォーマンスが優れています。同時に、Time per request(リクエストごとにかかる時間)やTime per request(リクエストごとにかかる平均時間)も非常に重要な指標であり、1つのリクエストの処理性能、つまりリクエストの応答速度を表します。値が低いほどサーバーは遅くなり、パフォーマンスが向上します。

ApacheBench に加えて、wrk ツールを使用して Web アプリケーションのパフォーマンス テストを実行することもできます。 wrk は、高い同時実行性と高いパフォーマンスという利点を備えた最新の HTTP ベンチマーク テスト ツールです。

繰り返しますが、最初に Web アプリケーションを開始する必要があります。コマンド ラインで、次のコマンドを使用してテストできます。

wrk -t 4 -c 1000 -d 10s http://localhost:8080/hello
ログイン後にコピー

このうち、-t はスレッド数を表し、-c は同時実行数を表し、-d はテスト期間を表します。http: //localhost:8080/hello は Web アプリケーションのアドレスです。

このコマンドを実行すると、wrk は次の結果を出力することがわかります。

Running 10s test @ http://localhost:8080/hello
  4 threads and 1000 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     4.97ms   51.05us   5.57ms   78.15%
    Req/Sec    50.73k     2.10k   54.41k    79.00%
  2034638 requests in 10.00s, 381.47MB read
  Socket errors: connect 748, read 1969, write 0, timeout 0
Requests/sec: 203513.06
Transfer/sec:     38.14MB
ログイン後にコピー

このうち、各インジケーターの意味は次のとおりです。

  • スレッド統計: スレッド統計。
  • レイテンシ: 処理遅延。
  • Req/Sec: 1 秒あたりのリクエスト数。
  • requests in 10.00s: 10 秒以内のリクエストの数。
  • MB read: 読み取られたデータの量。
  • リクエスト/秒: 1 秒あたりのリクエストの数。
  • 転送/秒: 転送速度。

同様に、Requests/sec (1 秒あたりのリクエスト数) と Latency (処理遅延) が最も重要な指標です。中でもRequests/sec(1秒あたりのリクエスト数)もサーバーのパフォーマンスを測る重要な指標です。

3. まとめ

この記事では、ApacheBenchやwrkを使ったパフォーマンステストの方法や注意点など、WebアプリケーションのパフォーマンステストにGo言語を使用する方法を紹介します。パフォーマンス テストを実施する場合は、テスト環境のハードウェアとソフトウェアの構成、テスト プロセス中のパラメータ設定と結果の解釈に注意を払う必要があります。同時に、実際には、Web アプリケーションのパフォーマンスと信頼性を向上させるために、さまざまなビジネス ニーズやシナリオに基づいてパフォーマンス テストを実施する必要もあります。

以上がGolang 学習 Web アプリケーションのパフォーマンス テストの実践の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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