サーバー同時実行数の推定式と計算方法

サーバー同時実行数の推定式と計算方法

最近、サーバーのストレステストを再度行う必要が出てきました。ここでは、最近学んだ見積もりスキームと見積もり方法をまとめます。以下の推定方法では、フラッシュセールなどの極端な状況は考慮されません。

同時実行価値の推定

1.1 古典的な式

一般的に、システムの同時ユーザーの平均数とピーク データを推定するには、次の経験式が使用されます。

  • 1) 平均同時ユーザー数はC = nL/T
  • 2) 同時接続ユーザー数のピーク値 C' = C + 3*平方根C

C は同時ユーザーの平均数、n はログイン セッションの数、L はログイン セッションの平均時間、T は観察される時間の長さです。

C'は同時ユーザーのピーク数です

この式を使用して、同時ユーザー数が 100 万人のテイクアウト注文アプリの同時ユーザー数のおおよその範囲を計算すると、次のようになります。

フードデリバリーアプリのユーザー数が 100 万人で、1 日のアクティブユーザーが 12.5%、つまり 125,000 人を占めているとします。1 日のアクティブユーザー 1 人あたりのアプリ起動から料理の注文までの平均時間は約 5 分で、午前 8 時から午後 12 時までアプリを使用しているユーザーがいると仮定します。次に値を計算します。

平均同時ユーザー数 C = 125000*5/16*60 = 651
同時ユーザー数のピーク C`=651+3*root 651=726

上記は古典的な計算式で計算された同時ユーザー数ですが、実際の状況とは異なる場合があります。

フードデリバリーアプリに関しては、ほとんどの人がピーク時に食べ物を注文するので、このタイプのフードデリバリーアプリは別途検討する必要があります。

同時ユーザー数を推定するために2/8の原則を使用します。つまり、ピーク時間帯にユーザーの80%が食べ物を注文し、ピーク時間帯は11〜12時と17〜19時の合計5時間に設定します。この場合、同時ユーザー数は次のように推定されます。

平均同時ユーザー数 C = 125000 * 5 * 0.8 / 5 * 60 = 1666
同時接続ユーザー数のピーク値 C`=1666+3*1666の平方根=1788

1.2 一般式

ほとんどのシナリオでは、同時実行性を推定するために、(ユーザー総数/統計時間) * インパクト ファクター (通常は 3) を使用できます。

たとえば、地下鉄を例にとると、毎日5万人の乗客がいます。朝のピークは毎日7時から9時まで、夕方のピークは6時から7時までです。8/2の原則によれば、ピーク時には乗客の80%が地下鉄を利用します。地下鉄の改札口に1秒あたりに到着する人の数は5000080%/(36060)= 3.7で、約4人/秒です。セキュリティチェックや入口閉鎖などの要素を考慮すると、改札口に蓄積される実際の人数はこれよりも多くなければなりません。一人当たり駅に入るのに3秒かかると仮定すると、実際の同時実行数は4人/秒3秒= 12になります。もちろん、実際の状況に応じて影響係数を増やすことができます。

したがって、IoT デバイスは実際には汎用デバイスと見なすことができます。

さらに極端なケースでは、100 万台のデバイスのうち 95%、つまり 950,000 台が毎日アクティブなデバイスです。また、これらのデバイスの 80% が 3 時間以内 (ピーク期間) にサーバーにアクセスすると仮定すると、同時接続デバイスの数を推定できます。

950000*0.8/(3*60*60)=70/秒

IoTデバイスの不確実性が高いため、インパクトファクターを5に設定しました。

.70*5=350 は、アクティブなデバイスの数が 1 秒あたり 350 台であることを意味します。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • サーバーストレステストの概念と方法 (TPS/同時実行性)
  • サーバー同時実行数の推定式と計算方法

<<:  CSSアニメーションとSVGを組み合わせてエネルギーの流れの効果を作成する

>>:  vue+elementui+vuex+sessionStorage を使用して履歴タグ メニューを実装するためのサンプル コード

推薦する

Vue3 シングルファイルコンポーネントのスタイル機能の詳細な説明

目次スタイルスコープスタイルモジュール状態駆動型動的CSS要約するスタイルスコープ注意事項:スタイル...

FirefoxのWeb開発者を使用してWebページのスタイルを無効にする方法

前提条件: Web開発者プラグインがインストールされている操作手順: [ツール] -> [We...

VMware 仮想マシンのインストール CentOS 8 (1905) システム チュートリアル ダイアグラム

世界的に有名な仮想マシン ソフトウェア VMware-workstation-full-15.5.0...

Gojs がアリのラインアニメーション効果を実装

目次1. Gojsの実装1. 描画2. 破線の実装3. 点線を動かす2. 点線と点線アニメーションの...

MySQL データ挿入効率の比較

データを挿入するとき、以前オフィス システムに取り組んでいたときにはデータベースのパフォーマンスにつ...

Js における new 演算子の役割の詳細な説明

序文Js は現在最も一般的に使用されているコード操作言語であり、その中でも new 演算子は特によく...

DIV 背景半透明テキスト非半透明スタイル

DIVの背景は半透明ですが、DIV内の文字は半透明ではありませんコードをコピーコードは次のとおりです...

純粋な CSS を使用して 3D 回転効果を実装するサンプル コード

3D効果を実現するには、主にCSSのpreserve-3dプロパティとperspectiveプロパテ...

Linux 環境に nginx をインストールするチュートリアル

目次1. 必要な環境をインストールする //gccをインストールする yum で gcc-c++ を...

MySQL テーブル内の重複データを検索して削除する方法の概要

時々、データベース テーブルに重複したデータが大量に保存されます。これらの重複データはリソースを浪費...

dockerログマウントの問題を解決する

重要なのは、ローカルサーバーに書き込み権限がないことですキーはここにあります(アクセス拒否)。私は肯...

MySQL PHP 構文の簡単な分析

まずcharAt関数の基本的な構文を見てみましょう文字 = str.charAt(インデックス) c...

JSはclip-pathを使用して動的領域クリッピング機能を実装します

背景今日、CodePen を閲覧していたところ、非常に興味深い効果を見つけました。 CodePen ...

Mac での MySQL と Squel Pro の設定

Node.js の人気に応えて、最近、いくつかのサーバー側機能を実装するために Node.js を使...

ネイティブ JavaScript でオブジェクトが空かどうかをチェックする実装例

目次ネイティブJavaScriptとはA. 新しいブラウザでnullオブジェクトをチェックするコンス...