
最近、「RAM を増やすかサーバーを増やすか、どちらをいつ決めるべきか知っていますか?」と尋ねられました (データ マイニング アプリケーションのスケーリングに関して)。
全く分かりませんでした。では、どのような方法で決めればよいのでしょうか? アーキテクチャとスケーリングに関する知識はほとんどありません (コンピューターのメモリとサーバーの動作に関する私の理解は、高レベルの基礎に限られています)。そのため、これらのこと全般についてさらに学ぶためのヒントも大歓迎です。
答え1
「RAM を増やすかサーバーを増やすか、いつ決めるべきか知っていますか?」(データ マイニング アプリケーションのスケーリングのコンテキストにおいて)。
答えは、問題のサーバーのメトリクスを教えていただければ、どちらを追加するか(または、どちらかを追加する価値があるかどうか)をお伝えします。このタイプのチューニングは魔法ではありません(インストルメンテーションのないアプリケーションとインストルメンテーションのないサーバー OS を使用している場合は、そうです、魔法です)。科学です。アプリケーションとサーバーを測定します。簡単に言うと、監視メトリクスを使用してパフォーマンスのボトルネックがどこにあるかを把握し、それを追加します。
答え2
一般的に、サーバー/アプリケーションのパフォーマンス向上には、かなりの量の魔法 (または少なくとも試行錯誤) が伴います。
尋ねられた特定の質問に対する一般的なルールは、まずメモリをそれ以上増やせないまで増やすことです。またはメモリを増やしてもパフォーマンスが向上しなくなるまで続けます。メモリは比較的安価なので、メモリを最大化する方が簡単かもしれません。また、アプリケーションがディスクを大量に使用する場合は、高速ドライブや高性能コントローラにアップグレードすると違いが出ることがあります。
しかし、質問の非常に一般的な性質から、パフォーマンスを改善するための他の試みは行われていないのではないかと思います。ハードウェアは安価であるため、問題に対してサーバーを増やすことさえも簡単に達成できることには同意します。ただし、他の手段、特に OS とデータベースのチューニングも確実に実行する必要があります。データベース、OS、またはアプリケーション構成を少し調整するだけで、パフォーマンスが大幅に改善されることがあります。
このサイトで特定の OS、データベース、アプリケーションを検索すると、良い発見があるかもしれません。
答え3
エンタープライズ アーキテクトとして、私はほぼ毎日この問題に取り組んできました。垂直スケーリングか水平スケーリングか?
あなたのニーズは何ですか?
より多くのユーザーをサポートする必要がありますか? サービスの速度を向上させる必要がありますか? 両方が必要ですか? 99.9999 の高可用性が必要ですか、それともユーザーがダウンタイムを許容できますか?
まず、現在のシステムのパフォーマンス メトリックを取得する必要があります。アクティブ ユーザーの数、RAM と CPU の負荷、ディスク I/O など、ボトルネックとなっている箇所を見つけます。
問題に基づく可能な解決策: 現在のリソースの最適化から始めます。アプリケーションがデータベース駆動型の場合は、クエリとスレッド キャッシュ、インデックスなどを使用してデータベースを最適化します。他のアプリケーションとサーバーを共有している場合は、専用サーバーへの移行を検討します。(アクティブでない/重要度の低いアプリケーションの仮想化を検討して、専用リソースを解放します)。
現在のマシンはフル稼働しており、RAM と CPU の負荷が高く、ディスク I/O も高いため、RAM を追加するためのコストを計算し、より高速なディスク I/O (RAID、ATA の代わりに SATA) に切り替えることはできますか?
高可用性が必要な場合は、いずれにしてもハードウェアと負荷分散を追加する必要があるでしょう。
ハードウェアのアップグレードを追加するほうが安いですか、それとも新しいサーバーを追加するほうが安いですか? どちらが長期的な目標と成長に適していますか?
IT 部門がお金を使うのに最適な時期はいつでしょうか? 現在資金がありますか、それとも経費を別の四半期/年にシフトしますか? 資金が問題である場合は、今すぐ最適化するか、他のアプリケーションからハードウェアを解放して一時的な負荷分散ソリューションを追加することを検討してください。
さまざまなソリューションを検討することを恐れないでください。ベンダーは、iSCSI RAID 10 を搭載した新しいサーバーを 10 パーセントのコストで使用できる、負荷分散された SAN ストレージ中心のソリューションを購入することを求める場合があります。
最適化後も CPU の負荷が高い場合は、ハードウェアを追加または交換する必要があります。ディスク I/O がボトルネックになっていて、ストレージ テクノロジをアップグレードできない場合は、ハードウェアを交換するか、ネットワーク ストレージまたは接続ストレージ ソリューションを追加する必要があります。
パフォーマンス メトリックをキャプチャします。最適化、改善し、再度メトリックをキャプチャします。パフォーマンスの増減を記録し続けることで、費やした金額と、その結果得られたパフォーマンスの向上を記録したレポートを提出できます。これらは、適切に実行すれば、管理者をアーキテクトに、アーキテクトをプロジェクト マネージャーに、PM を上級管理職に昇進させる可能性のある成功事例です。
答え4
RAM は安価です。まずは最も経済的な量になるまで RAM を増やす必要があります (たとえば、4 GB の DIMM は法外に高価なので、気にする必要はありません)。
次に、横方向のスケーリング(サーバーの増設)を検討します。安価な消費者向けハードウェアと高価なサーバー部品を検討しますが、障害を予測し、フェイルオーバーの見積もりを総処理能力に組み込みます。
基本的に、Googleで検索。