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

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

推薦する

ウェブフロントエンド開発の細部

1 選択タグは閉じられている必要があります <select></select>...

Vue プロジェクトでよく使用されるツール機能の概要

目次序文1. カスタムフォーカスコマンド1. 方法1 2. 方法2 3. 方法3 2. 入力ボックス...

JavaScript を使用してソートアルゴリズムを実装する方法

目次バブルソート選択ソート挿入ソート要約するバブルソートバブルソートは、シーケンスの右側から始めて、...

Centos7.5 構成 Java 環境のインストール Tomcat の説明

Tomcat は Java 言語をベースにした Web サーバー ソフトウェアです。この記事では主に...

nginx は画像表示の遅さとダウンロードの不完全さの問題を解決します

前面に書かれた最近、ある読者から、ブラウザからサーバーにアクセスすると、画像の表示が遅く、ブラウザに...

JavaScript はパスワードボックスの入力検証を実装します

サーバーの負荷を軽減するために、ユーザーが入力するときにフロントエンドページで簡単な検証を実行する必...

レスポンシブ Web デザイン手法を実装し、ウォーターフォール モデルに別れを告げる 5 つのステップ (グラフィック チュートリアル)

次の Web デザイン プロジェクトはレスポンシブにする必要があると上司をようやく納得させることがで...

CSS 属性を使用してマウス イベントをブロックする方法 (マウス クリックは上位の要素を貫通する可能性があります)

由来: 数日前、テスターから写真を見るという要件が送られてきました。 この要件を見たとき、私は少し混...

LinuxにMySQLをインストールし、外部ネットワークアクセスを構成する例

設定手順1. DNSが設定されているかどうかを確認するDNSが設定されていない場合は、前の記事を参照...

CSS3 フリップカード番号サンプルコード

今日会社から課題をもらったのですが、効果図は以下のとおりです。 どのような効果を実現したいかは特に決...

CentOS 7にChromeブラウザをインストールする方法

この記事では、CentOS 7 に Chrome ブラウザをインストールする方法を紹介します。詳細は...

MySQL <> および <=> 演算子の紹介

<> 演算子機能: 等しくないことを示します。注: 「!=」演算子と同じ機能を持ちますが...

npmとcnpmを混在させる際の落とし穴の詳細な説明

目次原因理由NPM の紹介: CNPM の紹介:より良い方法方法の改善npm と cnpm を一緒に...

node_modulesを削除して再インストールする方法

目次ステップ1: プロジェクトをインストールするディレクトリにnode_modulesをインストール...

値の転送を実現するために、2つの同じレベルのコンポーネントをVueで作成します。

Vue コンポーネントは接続されているため、コンポーネント間で値を渡す必要があるのは避けられません...