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

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

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

同時実行価値の推定

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

推薦する

JavaScriptの浅いコピーと深いコピーについての簡単な説明

目次1. 直接譲渡2. 浅いコピー3. ディープコピー1. JSONオブジェクトメソッド2. 再帰コ...

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

このチュートリアルでは、MySQL 5.7のインストールと設定方法を参考までに紹介します。具体的な内...

【Webデザイン】E-WebTemplates の美しい海外の Web ページ テンプレート (FLASH+PSD ソース ファイル+HTML) を共有します

これらはすべて海外のE-WebTemplates WebサイトからのWebページテンプレートであり、...

フロントエンド制作に関する簡単な議論: 互換性のために IE6 はまだ必要ですか?

国内市場ではIE6~7のサポートに対する一定の需要がまだありますが、フロントエンド開発者として、私た...

JavaScriptにおけるPromiseの使い方と注意点について(推奨)

1. 約束の説明Promise は、非同期操作の最終状態 (失敗または正常完了) とその結果の値を...

Element-ui の組み込み 2 つのリモート検索 (ファジークエリ) の使用方法の説明

問題の説明フロントエンドリモート検索やファジークエリと呼ばれる種類のクエリがあります。 Ele.me...

Linux プラットフォームでの Zabbix エージェントのインストールと設定方法

ここでは、Linux プラットフォームでの Zabbix エージェントのインストールと構成について簡...

HTML でシンプルな ListViews 効果を実装するためのサンプル コード

シンプルなリストビュー効果を実現するHTML結果: CSS スタイル ファイル listviewTe...

MySQL ストアド プロシージャのエラー処理例の詳細な説明

この記事では、例を使用して MySQL ストアド プロシージャのエラー処理について説明します。ご参考...

Linux のリンク解除機能とファイルの削除方法

1. リンク解除機能ハード リンクの場合、unlink はディレクトリ エントリを削除し、inode...

Vue の自動書式設定の改行保存の詳細な説明

ネットで変更方法をいろいろ調べたのですが、うまくいきませんでした。後で大物から見て削除しました。フォ...

Linux システムで Code Cloud にプロジェクトをアップロードする方法

Code Cloudで新しいプロジェクトtest1を作成します。 公開鍵を取得するには次のコマンドを...

MySQL の文字セット utf8 を utf8mb4 に変更する方法

MySQL 5.5 の場合、文字セットが設定されていない場合、MySQL のデフォルトの文字セットは...

ノードを使用して静的ファイルキャッシュを実装する方法

目次キャッシュキャッシュ位置の分類キャッシュ設定ヘッダーNodeは静的ファイルキャッシュを実装する強...

MySQL の遅いクエリの最適化方法と最適化の原則

1. 日付のサイズを比較するには、XML に渡される日付形式は 'yyyy-MM-dd...