容量計画は、システムが負荷を処理できるかどうかを決定します
-
01-10-2019 - |
質問
Java EEベースのeコマースWebサイトが、予想される応答時間とスループットを提供していることを順調に実行しているとしましょう。 Webサイトは大規模なUIの変更を受けており、3倍のトラフィックをもたらすことが期待されています。
投影されたWebトラフィックが既存の環境で処理できるかどうかを確認するにはどうすればよいですか?
システムの使用率(CPU、メモリ利用)、スループット、既存のシステムの応答時間がある場合、実際にシステムにロードテストすることなく、いくつかの経験式を使用してそれを見つける方法はありますか。 (目標は、設計段階でSLAを満たすことができるかどうかを判断することです)
解決
いいえ、これには式はありません。これには相互依存要因が多すぎます。現実的な数字を取得する唯一の方法は、経験的テストです。これができない場合、あなたはハードウェアの過剰能力を求めて、次のような教育を受けた推測をすることを選択することです。
- 新しいUIはCPUの使用に影響しますか?
- ページのレンダリングと転送に時間がかかりますか?並行性の増加を推定します。
- トラフィックが多いというのは、より多くのデータを意味しますか?はいの場合、これはパフォーマンスにどのような影響を与えますか?
- 並行性の予期せぬ増加につながる可能性のあるボトルネックはありますか?
- 並行性の増加はメモリの使用にどのように影響しますか?
- メモリ使用量は、ファイルシステムキャッシュ、データベースキャッシュ、JPAキャッシュなどにどのように影響しますか。
- パフォーマンスはバインドされていますか?そして、どのくらいの予備容量が利用可能ですか?
- パフォーマンスはCPUにバインドされていますか?そして、どのくらいの予備容量が利用可能ですか?
- メモリにどれくらいの予備容量がありますか?
他のヒント
私は以前の答えに部分的に同意しません。確かに、能力計画には、一連の(潜在的に危険な)仮定を備えたモデルの作成が含まれます。
それにもかかわらず、次の良い歴史的視点を持っている:
トランザクションロード(例:ApacheログでWebヒット)
CPUおよびメモリ利用
ロードパフォーマンス分析は、分析統計技術を通じて「サービス需要」(大まかに単一の要求の処理に使用されるリソースの量)を決定するために構築できます。その後、同じパラメーターをキューイングネットワークモデルに供給して、予想される応答時間とスループットを推定できます(その動作は、高レベルのリソース飽和で非常に非線形になります)。
ちょうど言ったことにもかかわらず: - それは簡単なフォーミュラではありません
新しいUIの効果は3倍の負荷生成であり、他に何もないと仮定する必要があります(リクエストに対する同じサービス需要、同じ効率)
容量計画の一般的な問題であるモデルのない可能性のあるボトルネック(飽和接続プール、ネットワーク帯域幅など)で問題を経験するリスクを冒しています。
テストは唯一の安全なオプションであり、残念ながら利用できないオプションがあまりにも頻繁にあります。