最近、「RAMを増やすかサーバーを増やすかを判断するタイミングを知っていますか?」(データマイニングアプリケーションのスケーリングのコンテキストで)。
わからなかったので、どのように決めるのですか?私はアーキテクチャとスケーリングの知識がほとんどないので(コンピュータのメモリとサーバーが行うことの理解は高レベルの基本に限定されています)、これらの一般的なことをさらに学ぶためのヒントも大歓迎です。
最近、「RAMを増やすかサーバーを増やすかを判断するタイミングを知っていますか?」(データマイニングアプリケーションのスケーリングのコンテキストで)。
わからなかったので、どのように決めるのですか?私はアーキテクチャとスケーリングの知識がほとんどないので(コンピュータのメモリとサーバーが行うことの理解は高レベルの基本に限定されています)、これらの一般的なことをさらに学ぶためのヒントも大歓迎です。
回答:
「RAMを増やすか、サーバーを増やすかをいつ決めるか知っていますか?」(データマイニングアプリケーションのスケーリングのコンテキストで)。
答えは、問題のサーバーのメトリックスを教えてくれたらすぐに教えてくれます(または、いずれかを追加する価値があるかどうか)。このタイプのチューニングはブードゥー教ではありません(インストルメンテーションのないアプリケーションとインストルメンテーションのないサーバーOSを使用している場合を除いて、そうですね、それはブードゥー教です)。アプリケーションとサーバーを測定します。簡単に言えば、モニタリング指標を使用して、パフォーマンスのボトルネックがどこにあるかを把握し、それをさらに追加します。
一般に、サーバー/アプリケーションのパフォーマンスの向上にはかなりのブードゥー(または少なくとも試行錯誤)があります。
具体的な質問のための一般的なルールはこれ以上増加させることができないまで、第1のメモリを増やすことである頼まないORまでより多くのメモリは、もはやパフォーマンスが向上します。メモリが比較的安価な場合は、単にメモリを最大化する方が簡単です。また、アプリケーションがディスクを多用する場合、高速ドライブまたは高性能コントローラーにアップグレードすると、違いが生じる可能性があります。
ただし、質問の非常に一般的な性質から、パフォーマンスを改善する他の試みはなかったと私は思います。ハードウェアは安価であるため、問題が発生したときにサーバーを増やすことも簡単です。ただし、他の手段、特にOSとデータベースのチューニングが行われていることも確認します。場合によっては、データベース、OS、またはアプリケーションの構成を少し調整するだけで、パフォーマンスが大幅に向上することがあります。
特定のOS、データベース、アプリケーションでこのサイトを検索してください。
エンタープライズアーキテクトとして、私はほぼ毎日この問題に対処してきました。垂直または水平スケーリング?
あなたのニーズは何ですか?
より多くのユーザーをサポートする必要がありますか?サービスの速度を改善する必要がありますか?両方必要ですか?高可用性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を上層部の管理職にできる成功事例のタイプです。
RAMは安いです。常に最初に、そこに最も経済的な数量を確保する必要があります(たとえば、4GB DIMMは非常に高価なので、私はそれらに悩まされることはありません)。
次に、横方向のスケーリングを調べます(より多くのサーバー)。安価なコンシューマハードウェアと高価なサーバーパーツを比較してください。ただし、障害を想定し、フェイルオーバーの見積もりを総処理能力に組み込んでください。
基本的に、Googleを実行します。
どのOSを使用しているか、どのくらいのRAMをサポートしているか、どのくらいのRAMを持っているかについても質問します。32ビットOSの限界に達している場合は、RAMを追加購入しても効果はありません。Windowsを使用している場合、特定のSKUは、32ビットの制限に正確に関連していない特定の量のRAMに制限されます。
一部の人々は、RAMの追加は魔法の修正であると考えているようです。RAMがボトルネックである場合にのみ役立ちます。