0

顧客は、クラスタ化された Web アプリケーション サーバーをかなりの負荷の下で実行しています。彼は、まだ実装されていない今後のアプリケーションが現在のセットアップで管理できるかどうかを知りたがっています。既存の要件仕様 (または機能設計仕様) に基づいて、コンセプト状態のアプリケーションのパフォーマンスへの影響を予測するための確立された方法はありますか? 最優先事項は、CPU リソースへの影響を予測することです。

まったく正確な結果を得ることができますか?

4

1 に答える 1

3

標準的な答えはノーだと思います。ターゲット アーキテクチャにデプロイされている実際のアプリケーションを常にベンチマークする必要があります

なんで?ソフトウェアとソフトウェア開発は予測できません。そして、システムはさらに予測不可能です。

要件を理解して詳細な分析を行ったとしても、次の場合はどうなるでしょうか。

  • プログラムに 1 つ (または 2 つ...) のパフォーマンス バグがあります - サードパーティ ライブラリのバグである可能性もあります
  • 新しい要件が追加された、または要件が変更された
  • 分析と設計では、コンポーネント間の隠れた相互関係をすべて見つけられるわけではありません
  • 負荷の追加には非線形の影響があり、新しい負荷によってハードウェアが重大なしきい値 (現時点では明らかでないしきい値) を超える可能性があります。

これらの懸念は理論的なものではありません。もしそうなら、ソフトウェアの開発は些細なことであり、プロジェクトは常に時間通りに予算内で提供されます。

ただし、私が個人的に使用した、適用できるヒューリスティックがいくつかあります。まず、現在のシステムを十分に理解する必要があります。

  • 既存のシステムの機能を小規模、中規模、大規模に分類し、ハードウェアの機能をベンチマークします
  • これらの個々の機能の負荷テストを実行し、トランザクション/秒のスループット、CPU コスト、ネットワーク トラフィック、およびディスク I/O の数値を可能な限り多くのトランザクションについて取得し、小規模、中規模、大規模の表現があることを確認します。この負荷テストでは、追加の負荷によってトランザクション/秒が減少するポイントまでシステムを処理する必要があります。
  • 現在のシステムの最大トランザクション/秒の数値を取得します
  • このアプリケーションの成長率を理解し、それに応じて計画を立てる

分析を実行して、CPU、RAM、ディスク、およびネットワークに関して、小規模、中規模、および大規模の「平均」コストを取得します。これは次の形式になります。

  • 小口取引
    • CPU 使用率: 10 ミリ秒
    • RAM オーバーヘッド 5MB (キャッシュ)
    • RAM ワーキング: 100kb (例: 10 同時スレッド = 1MB、100 スレッド = 10MB)
    • ディスク I/O: 5kb (データベース)
    • ネットワークアプリ<->DB: 10kb
    • ネットワーク アプリ<->ブラウザ: 40kb

この分析から、どのくらいのヘッドルームがあるかを理解する必要があります - CPU は確かですが、十分な RAM、ネットワーク、およびディスク容量があることを確認してください。たとえば、小さなトランザクションに必要な CPU は、1 秒あたりの小さなトランザクションの数に小さなトランザクションの CPU コストを掛けた値です。中程度のトランザクションと大規模なトランザクションの CPU コストを追加すると、CPU バジェットが得られます。

DBA が関与していることを確認してください。DB でも同じことを行う必要があります。

次に、今後のアプリケーションを分析する必要があります。

  • 各機能を同じ小、中、大のバケットに割り当て、可能な限り類似のマッチングを確保します
  • 各機能がピーク時に 1 秒あたりに発生するトランザクション数について、深く掘り下げた質問をする
  • アプリケーションの予想される成長率について話す
  • データベースのサイズが大きくなると、システムが遅くなる可能性があることを忘れないでください

個人的には、あなたは予測不可能なことを予測するよう求められています - あなたの名前と評判を賭けて. それが収まると言うなら、あなたは大規模なソフトウェア開発プロジェクトのリスクを負っています. はいと言うようにプレッシャーをかけられている場合は、あなたの名前だけでなく、他の多くの人の名前が関係していることを確認する必要があります。また、それらの名前はすべて、実行するかしないかの決定に表示される必要があります。これにより、すべての要因が考慮され、分析が適切であることが保証される可能性が高くなるだけでなく、プロジェクトの成功に個人的に一致する多くの関係者がプロジェクトに関与することも保証されます.

于 2013-02-27T08:35:53.400 に答える