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

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

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

同時実行価値の推定

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 でタイムスタンプを日付に変換する例

序文職場で次のような状況に遭遇しました。ログ システムのテーブルでは、時間フィールドには日付データで...

HTMLテキストの一般的なイベントとメソッドの詳細な説明

イベントの説明onactivate: オブジェクトがアクティブ要素として設定されたときに発生します。...

Vueはv-modelを使用してel-paginationコンポーネントのプロセス全体をカプセル化します。

v-model を使用してページング情報オブジェクトをバインドします。ページング情報オブジェクトに...

チェックボックスとラジオボタンの配置を実装する方法

ブラウザによって動作が異なるだけでなく、フォントやテキスト サイズによっても動作が異なります。フォー...

ドラッグ位置プレビューを実装するネイティブJS

この記事では、要素をドラッグするときにプレビューを追加する小さなデモを紹介します。効果は次のとおりで...

MySQL 5.7.18 zip バージョンのインストールと設定方法のグラフィック チュートリアル (win7)

Windows に mysql5.7.18zip バージョンをインストールするには、使用前に解凍し...

MYSQLデータベースの最適化段階を簡単に理解する

導入面接官がこんな質問をしたことはありませんか?データベースをどのように最適化しますか?では、この質...

ミニマルなウェブサイトデザインの例

Web アプリケーション クラス1. みんなのためにダウンまたは私だけのためにこのウェブサイトは、ウ...

MySQL 5.x の文字化け問題の解決方法

MySQL はよく使われるオープンソースのデータベース ソフトウェアですが、初めてのユーザーにはあま...

mysql8.0.20 のダウンロードとインストールおよび発生した問題 (図とテキスト)

1.ブラウザでmysqlを検索してダウンロードしてインストールしますアドレス: https://d...

Docker Compose ワンクリック ELK デプロイ方式の実装

インストールFilebeat は、より軽量でより安全なため、Logstash-Forwarder に...

Linuxオペレーティングシステムは、タスクマネージャーの視覚化機能を実装するためにPythonを使用しています。

1. Pythonのインストール1. フォルダーを作成します。 mkdir python フォルダ...

MySQLのGROUP BYステートメントを最適化する方法

MySQL で、id、a、b の 3 つのフィールドを持つ新しいテーブルを作成します。次のように、同...

DockerにRedisをインストールし、設定ファイルとして起動する詳細な説明

更新: 最近、サーバーがマイニング ウイルスによってハッキングされたことが判明しました。これは、おそ...

@font-face を使用して Web ページに特殊文字を実装する (カスタム フォントを作成する)

数日前、CSS を使用して三角形の矢印を実装する方法について記事を書きました。 目的の効果は達成され...