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

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

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

同時実行価値の推定

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 を使用して履歴タグ メニューを実装するためのサンプル コード

推薦する

MySQL 8.0.18 のインストールと設定方法のグラフィック チュートリアル (Linux)

この記事では、Linux MySQL 8.0.18のインストールと設定のグラフィックチュートリアルを...

JavaScript イベント ループのケース スタディ

js のイベント ループJavaScript はシングルスレッドなので、同じイベントで実行できるメソ...

JavaScript 即時実行関数の使用状況分析

一般的に、関数は実行する前に呼び出す必要があることはご存じのとおりです。以下に示すように、関数を定義...

非表示のフォームテキストを表示するJavaScript

この記事では、フォームの隠しテキストを表示するためのJavaScriptの具体的なコードを参考までに...

MySQLのExcelへのエクスポート方法の分析

この記事では、MySQL を使用してデータを Excel にエクスポートする方法について説明します。...

Dockerはdockerfileを使用してnode.jsアプリケーションを起動します

Dockerfileの作成expressによって自動的に作成されたディレクトリを例にとると、ディレク...

効率的な視覚化Nginxログ表示ツール

目次導入インストール表示フィールドフィルターソートキー導入Rhit は、標準フォルダー (gzip ...

MySQL はどのようにしてデータベースの削除と暴走を効果的に防ぐことができますか?

目次セーフモード設定テスト1. where句なしで更新および削除する2. 非インデックスキーの削除3...

CentOS 8が利用可能になりました

CentOS 8 が利用可能になりました! CentOS 8 と RedHat Enterprise...

tomcat8の最新のLinuxインストールプロセス

ダウンロード参考:ダウンロードするコアパッケージを選択してくださいダウンロード後、ファイルをサーバー...

vue3+ts+EsLint+Prettier 標準コード実装

目次使用EsLintの使用プロフィールを追加するPrettierの使用huskyとlint-stag...

MySQL をインストールするときに初期パスワードを忘れた場合のシンプルで効果的な解決策

MySQL をインストールすると初期パスワードが与えられますが、この初期パスワードは大文字と小文字の...

Vue2とVue3のライフサイクルの比較の詳細な理解

目次サイクル比較使用法要約するサイクル比較ヴュー2ヴュー3作成前設定作成された設定マウント前マウント...

Linux で実行可能ファイルを実行するときに「そのようなファイルまたはディレクトリはありません」というプロンプトが表示される場合の解決策

最近、Linux オペレーティング システムを使用して実行可能ファイルを実行していたところ、「そのよ...