サーバーストレステストの概念と方法 (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を使用して炎の効果を作成する方法

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

推薦する

MySQL のインデックスにおける NULL の影響についての詳細な説明

序文私は多くのブログを読み、弊社の DBA を含む多くの人々が、MySql では列に null が含...

Vueはドラッグアンドドロップを使用して構造ツリーを作成します

この記事の例では、ドラッグアンドドロップを使用して構造ツリーを作成するVueの具体的なコードを共有し...

vue3.0 プロジェクトを素早く構築するための手順を完了する

目次1. 3.0をより適切にサポートするには、vue/cliのバージョンが4.5.0以上であることを...

Linux システムファイル共有 samba 設定チュートリアル

目次sambaをアンインストールしてインストールする新しい共有パスを作成し、権限を設定するSamba...

JSはクリックドロップ効果を実装します

jsはクリックとドロップの特殊効果を実現します。まずは効果画像を見てみましょうさっそく始めましょう。...

Mybatis ファジークエリ実装方法

Mybatis ファジークエリ実装方法mybatis のリバース アシスタントは非常に使いやすく、通...

CSS3 フィルター (フィルタ) ウェブページのグレーまたは黒モードのサンプルコードを実現

フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...

ネイティブJSが様々なスポーツの均一な動きを実現

この記事では、ネイティブ JS で実装された均一なモーションを紹介します。その効果は次のとおりです。...

Reactドラッグフックを実装するための100行以上のコード

序文ソースコードは合計で 100 行強しかありません。これを読めば、react-dnd などの成熟し...

CSS @font-face パフォーマンス最適化の詳細な理解

この記事では主に、フォント読み込みの最適化に関する一般的な戦略を紹介します。内容の大部分は参考資料と...

フォームの「Enter」、「Submit」、「Enter != Submit」を削除する方法

「Enter != Submit」問題を実装するには、通常、「ボタンの種類」と「入力ボックスの数」か...

回転するフリップカードアニメーションの効果を実現するCSS

回転フリップ効果の CSS アニメーション、具体的な内容は次のとおりです。 1. まず2つのボックス...

mysql エラー 1033 を解決する方法: ファイル内の情報が正しくありません: 'xxx.frm'

問題の説明1. 収集ステーションのデータベース2. データが無い状態での移動は問題ありませんが、デー...

Linux 環境で crontab コマンドを使用して、スケジュールされた定期的な実行タスクを設定します (PHP 実行コードを含む)

この記事では、Linux 環境で crontab コマンドを使用して、タスクの定期的な実行をスケジュ...

MySQL 8.0 が起動できない 3534 の解決策

MySQL 8.0 サービスを開始できません最近、 cmdで MySQL サービスを起動するときに遭...