サーバーストレステストの概念と方法 (TPS/同時実行性)

サーバーストレステストの概念と方法 (TPS/同時実行性)

1 ストレステストの指標

1.1 秒あたり

TPS は Transactions Per Second の略で、1 秒あたりに処理されるトランザクションの数を表します。トランザクションとは、クライアントがサーバーにリクエストを送信し、サーバーが応答する(処理を完了する、つまり、クライアントがリクエストを開始して応答を取得する)プロセスです。クライアントはリクエストを送信した時点で計測を開始し、サーバーからの応答を受信した時点で計測を終了します。これにより、使用された時間と完了したトランザクションの数を計算し、最終的にこの情報を使用して評価スコアを作成します。トランザクションは複数のリクエストに対応する場合があります。データベースのトランザクション操作を参照してください。

1.2 クォータベース

QPS は Queries Per Second の略で、1 秒あたりに処理できるクエリの数 (クライアントがリクエストを開始してから応答を受信するまでの処理全体) です。これは、サーバーが 1 秒あたりに応答できるクエリの数であり、特定のクエリ サーバーが指定された時間内に処理するトラフィックの量を測定するものです。

英語のフルネームから、クエリを意味することがわかります。インターネットでは、ドメイン ネーム システム サーバーとして機能するマシンのパフォーマンスは、1 秒あたりのクエリ レートで測定されることが多いようです。フェッチ/秒、つまり 1 秒あたりの応答要求の数に対応します。 名目上はクエリを意味しますが、実際には、単一のインターフェース サービスの処理能力を QPS で表すのが一般的です (クエリ操作でない場合でも)。

1.3 平均処理時間(RT)

RT: 応答時間、リクエストを処理するために必要な平均処理時間。

また、ネットワークの状態によっては極端な状況が発生する可能性があるため、通常はリクエストの 90% の平均処理時間に重点を置いています。

1.4 同時ユーザー数(同時実行性)

テスト対象のインターフェースに対して 1 秒あたりにリクエストを開始するユーザーの数。

1.5 変換関係

QPS = 同時接続数 / 平均応答時間

同時実行性 = QPS * 平均応答時間

たとえば、3,000 人のユーザー (同時実行) がテスト対象のインターフェースに同時にアクセスするとします。ユーザー側の統計によると、3,000 人のユーザーの平均応答時間は 1188.538 ミリ秒です。つまり、QPS=3000/1.188538s=2524.11 q/s となります。

このテストは次のように説明できます。3000の同時接続の場合、QPSは2524.11、平均応答時間は1188.538msです。

1.6 TPSとQPSの違い

この質問を始めたとき、私はこれら 2 つは同じものだと思っていましたが、Zhihu で英語名を見た後、次のように考えるようになりました。

QPS は 1 秒あたりに処理できるクエリの数を指しますが、現在では一般的に、単一のサービス インターフェイスが 1 秒あたりに処理できるリクエストの数を指す場合にも使用されます。

TPS は 1 秒あたりに処理されるトランザクションの数です。トランザクションが 1 つのサービス インターフェイスだけで完了する場合は、QPS と見なすこともできます。

PS: RPS (1秒あたりのリクエスト数) という概念もあります。特定の条件下では、1 秒あたりのリクエスト数は QPS や TPS と類似しています。

2 ストレステスト方法

ストレス テスト ツールを使用して複数のユーザーをシミュレートし、システムのストレス テストを行うことができます。ストレステストツールについては後ほど紹介します。

テスト方法は、リクエストの総数を一定に保ち、同時実行数を徐々に増やして、QPS と平均応答時間の変化を観察します。

たとえば、リクエストの総数が 10,000 の場合、同時実行数を 100 にして QPS 値をテストし、その後 200、300、400、500 などのようにテストします。

システムのスループットは通常、TPS と同時実行性の 2 つの要素によって決まります。各システムには、これら 2 つの値に対する相対的な制限があります。アプリケーション シナリオのアクセス プレッシャーの下では、1 つの項目がシステムの最大値に達する限り、システムのスループットは増加しません。プレッシャーがさらに高まると、システムのスループットはむしろ低下します。その理由は、システムが過負荷になり、コンテキスト スイッチやメモリなどの他の消費によってシステム パフォーマンスが低下するためです。以下は、ab ツールを使用したスト​​レス テスト チャートです。

図から、同時実行数が 2000 のときに QPS が約 2500 に達し、その後の同時実行数の増加が 2500 のままであることがわかります。これは、この構成でのこのインターフェイスの QPS が 2500 であることを示しています。つまり、システムは 1 秒あたり約 2500 件のリクエストしか処理できません。その後の同時実行数の増加は、平均応答時間の増加につながるだけです。 (追記: 1 秒あたり 2,500 件のリクエストしか処理できず、同時に 7,000 件のリクエストが処理されるため、当然リクエストが蓄積され、平均応答時間が長くなります。) 14,000 を超えると QPS も急激に低下し始め、システムが過負荷になり、パフォーマンスが急激に低下し始めていることがわかります。一般的に、平均応答時間が特定の値に達すると、それ以上は許容できないと考えられます。

3 関連文書

IoT デバイスの同時接続数を推定するブログ:

https://www.jb51.net/article/231516.htm

ストレステストツール AB ツール:

https://www.jb51.net/article/231502.htm

Node Express フレームワークのストレステスト結果:

https://www.jb51.net/article/231512.htm

これで、サーバー ストレス テスト (TPS/同時実行性) の概念と方法に関するこの記事は終了です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援して頂ければ幸いです。

以下もご興味があるかもしれません:
  • ab ツールを使用してサーバー上で API ストレス テストを実行します。
  • Apache abツールを使用してApacheサーバーで簡単なストレステストを実行します。
  • Nginx サーバーのストレス テストを実行するための ab の設定方法

<<:  CSSを使用して炎の効果を作成する方法

>>:  概要ページでのフロートとクリアフロート

推薦する

Nginx インストールの詳細なチュートリアル

1. Nginxの簡単な紹介Nginx は、無料のオープンソースの高性能 HTTP サーバーおよびリ...

Windows で削除された MySQL 8.0.17 のルート アカウントとパスワードを回復する方法

少し前にSQLの独学を終え、MySQL 8.0.17をダウンロードしました。インストールして設定した...

Ubuntu 20.04の新バージョンでルートユーザーを使用してシステムにログインする方法の詳細なチュートリアル

Ubuntu 20.04 では、デフォルトで root ログインが有効になっていないため、デスクトッ...

Ant Design Pro ログイン機能にグラフィック検証コード コンポーネントを統合する方法

序文:この記事では、Ant Design Proログイン機能にグラフィック検証コードコンポーネントを...

JSインターセプト文字列の3つの方法の詳細な説明

JS には、文字列をインターセプトするための 3 つのメソッド、 slice() 、 substri...

プライベートDockerリポジトリであるHarborをインストールするための詳細な手順

Harborのインストールは非常に簡単ですが、Dockerログインで行き詰まってしまいました。このブ...

MySQLトリガーの使用

目次1. トリガーの紹介1. トリガーとは何ですか? 2. トリガーの特徴2. トリガーを作成する1...

JavaScriptの知識ポイントの詳しい説明

目次1. JavaScriptの基礎2. 基本的なJavaScript構文3. JavaScript...

HTML の表の行と列を結合する問題の解決策の詳細な説明

私たちが構築しようとしていたウェブサイトには、長い文章だけでなく、多数の表も含まれており、表のレイア...

MySQLの挿入文字化け問題を解決する方法

問題の説明: MySQL に中国語の文字を挿入する場合、または MySQL では中国語の文字が正常に...

RGBA の「a」は何を意味するのでしょうか? CSS RGBA カラー ガイド

RGBAは色の値と透明度を設定できるCSSカラーです以下は、rgba() を使用して白色を 50% ...

vue $http の get および post リクエストのクロスドメイン問題を解決する

Vue $http get および post リクエストのクロスドメイン問題まずconfig/ind...

WeChatアプレットが弾丸画面を送信するビデオプレーヤーを実装

この記事では、WeChatアプレットでビデオプレーヤーの集中砲火を実装するための具体的なコードを参考...

よくある MySQL 設計エラーをご存知ですか?

インターネットの発達により、バスを待ったり地下鉄に乗ったりする時間など、断片的な時間を活用して、いつ...

Nginx でバージョン番号と Web ページのキャッシュ時間を非表示にする方法

Nginx の最適化 - バージョン番号と Web ページのキャッシュ時間を非表示にするバージョン番...