XPages の観点から言えば:
1 - ワーキング セットとハードウェアのダイナミクスを理解する
つまり、特定のワーキング セット (つまり、サーバー内の XPages アプリケーション) を処理するときに、アプリケーション コード、サーバー ランタイム、およびハードウェア プロファイルが何を行っているかを理解します。アプリケーションは、ライフサイクルの実行とメモリ使用に関して最適でない方法でコーディングされていますか? アプリケーションは、コンポーネント ツリーのシリアル化にメモリまたはディスクの永続性を利用していますか? サーバーには十分な量の JVM メモリーが割り当てられていますか? ハードウェアは十分な CPU とメモリを提供していますか?
2 - 上限負荷のあるワーキング セットのプロファイリングと監視
#1 のいくつかの質問に完全に答えるには、XPages Toolbox や Eclipse Memory Analyzer などのツールを使用して、詳細なパフォーマンスとスケーラビリティのプロファイリングを実行する必要があります。さらに、Rational Performance Tester (またはその他のパフォーマンス テスト ツール) を使用してワーキング セットをテストし、テスト環境で実際の並行ワークロードを模倣します。これにより、自動化を使用して(n)数の同時ユーザーでアプリケーションをヒットし、健康などに関する貴重なデータをすべて収集できるテスト環境をセットアップできます。
3 - プロファイル情報を分析してワーキング セット内のボトルネックを特定する
ワーキング セットは 1 つまたは複数のアプリケーションであることに注意してください。それぞれが異なることを行い、異なる負荷要件を持っています。当面のタスクについて具体的に説明してください。すべてのアプリケーションに対してより一般的にシステムを調整したいですか (平均的な規模)、それともサーバーを特定のアプリケーション向けに完全に最適化したいですか (目標とする規模)?
4 - 必要に応じてワーキング セットを最適化する
必要に応じて、XSP / Java / ServerSide JavaScript コードに変更を加えてください。XPages 要求処理ライフサイクルの知識を活用し、ハイエンド負荷のシナリオで空腹の JVM メモリ消費者に注意してください。常にディスクの永続性を優先し (ディスク ストレージは RAM より安価です!)、それに応じてカスタム Java オブジェクトとマネージド Bean をコーディングして、シリアライゼーションと復元に対処してください。そして、これらのシナリオでは、高いスケーラビリティが最終的に CPU を消費するシナリオで、機能と速度の間のトレードオフを行います...対象となる機能/アクションを備えたよりスマートな UX など.
5 - 必要に応じてハードウェアをスケーリングする
ワーキング セットのニーズに基づいて、コア、クロック速度、RAM、ディスク ストレージを増やす準備をしてください。ワーキング セットのプロファイリング、監視、および最適化への循環的なアプローチは、このプロセスとしてハードウェアの適合性にますます光を当てます。進化します。
5 - ワーキング セットとハードウェアが機能し、システムの予想される要件/負荷の期待値にスケーリングされるまで、2 から繰り返します。