0

Web サービスを設計する必要があるとします。簡単にするために、LAMP (Linux-Apache-MySQL-PHP) を使用するとします。

N1 秒あたりのユーザー リクエストを正確に処理できることはわかっています。リクエストは基本的に、データベースに対する単純なCRUD操作であり、ファイルのアップロードや複雑な計算はありません。

各リクエストがMms を実行し、 Gb の RAMKを持つサーバーで Mb のメモリを使用するとします。G

そのようなサーバーはいくつ必要ですか? それはただN * K / Gですか?

M の妥当な値は200msです。の妥当な値はK?

この質問では、CPU パワーを考慮する必要がありますか?

追加の考慮事項はありますか?

4

1 に答える 1

1

あなたが行っていることは、大まかな概算の裏返しですが、サービスをスケーリングするための決定的なガイドとして思考演習を使用するべきではありません。

これは、あなたが説明したような一定の動作を示すサービスがないためです(予測できない周辺機器のI / O、ガベージコレクション、外部要因、ユーザー入力などの場合は責任があります)

正しいアプローチは、スケールと負荷のテストを実行することです。サービスを作成したら、サービスの負荷テストを開始し、サービスのパフォーマンス特性に注意してください。正しいことを行えば、CPU、ネットワーク スループット、メモリ、またはディスク I/O のいずれかで、構成が最大になるポイントに到達するはずです。どちらも上限に達しておらず、制限に達している場合、それはアップストリームの依存関係 (データベースなど) の 1 つです。

ピークに達すると、ピーク時に処理できる 1 秒あたりのリクエスト数がわかります。

また、ほとんどの場合、ピーク パフォーマンスが維持できないことにも気付くでしょう。負荷が持続している場合よりも、1 秒あたりのリクエスト数が多い場合、セットアップが短期間バーストする可能性があります。

1 台のサーバーの数値を取得したら、次の 2 つの方法で変更を開始できます。

  1. さまざまなハードウェア構成でテストします (メモリに制約がある場合は RAM を追加し、CPU に制約がある場合はより優れた CPU を追加します)。

  2. 複数のサーバーでテストします。サーバーの追加を開始し、サービスが水平方向にどのようにスケーリングするかを確認します

理想的には、サービスはサーバーを追加するにつれて直線的に拡張する必要がありますが、パフォーマンス曲線が直線的ではないことに気付くでしょう。

数字を取得し、デザインを微調整します。リンス。繰り返す。

代わりになる魔法の公式はありません。

于 2016-11-02T06:54:41.863 に答える