私は最近、「より多くのRAM以上のサーバーを使用するかどうかを決定する時期を知っていますか?」(データマイニングアプリケーションのスケーリングのコンテキストで)と尋ねられました。
わからなかったので、どうやって決めるの?私はアーキテクチャとスケーリングについてほとんど知識がありません(コンピュータメモリとサーバーの機能についての私の理解は高レベルの基本に限定されています)ので、これらのことについて一般的に学ぶためのヒントも大歓迎です。
「より多くのRAM以上のサーバーを選択する時期を知っていますか?」(データマイニングアプリケーションのスケーリングのコンテキストで)。
答えは、問題のサーバーのメトリックを教えてくれたらすぐに、どちらを追加するか(または追加する価値があるかどうか)を教えてくれることです。このタイプのチューニングはブードゥーではありません(インストルメンテーションなしのアプリケーションとインストルメンテーションなしのサーバーOSを使用している場合を除きます-そうです、それはブードゥーです)それは科学です。アプリケーションとサーバーを測定します。一言で言えば、監視メトリックを使用して、パフォーマンスのボトルネックがどこにあるかを把握し、さらに追加します。
エンタープライズアーキテクトとして、私はほぼ毎日この問題に取り組んできました。垂直または水平スケーリング?
あなたのニーズは何ですか?
より多くのユーザーをサポートする必要がありますか?サービスの速度を向上させる必要がありますか?両方必要ですか?高可用性99.9999が必要ですか、それともユーザーはダウンタイムを取ることができますか?
開始するには、現在のシステムのパフォーマンスメトリックをキャプチャする必要があります。アクティブユーザーの数、RAMおよびCPU負荷、ディスクI/O-ボトルネックがどこにあるかを調べます。
問題に基づいて考えられる解決策:現在のリソースの最適化から始めます。アプリケーションがデータベース駆動型の場合は、クエリとスレッドのキャッシュ、インデックスなどを使用してデータベースを最適化します。サーバーを他のアプリケーションと共有している場合は、専用サーバーへの移行を検討してください。 (専用リソースを解放するために、あまりアクティブでない/重要でないアプリケーションの仮想化を調べてください)。
現在のマシンはフルキャパシティーです、RAMおよびCPUの負荷が高く、ディスクI/Oが高い-RAMを追加するためのコストを計算し、より高速なディスクI/O(RAID、SATAを導入ATAの)?
高可用性が必要な場合は、とにかくハードウェアと負荷分散を追加する必要があります。
ハードウェアのアップグレードを追加したり、新しいサーバーを追加したりする方が安いですか?どちらが長期的な目標と成長に適合しますか?
IT部門がお金を使うのに最適な時期はいつですか。あなたは今資金を持っていますか、それとも費用を別の四半期/年にシフトしたいですか?資金が問題になる場合は、今すぐ最適化するか、他のアプリケーションからハードウェアを解放して一時的な負荷分散ソリューションを追加することを検討してください。
数多くの解決策を探すことを恐れないでください。ベンダーは、負荷分散されたSANストレージ中心のソリューションを購入することを希望する場合があります。このソリューションでは、iSCSI RAID 10を搭載した新しいサーバーがコストの10%で機能します。
最適化後もCPUの負荷が高い場合は、ハードウェアを追加/交換する必要があります。ディスクI/Oがボトルネックであり、ストレージテクノロジーをアップグレードできない場合は、ハードウェアを交換するか、ネットワークストレージ/接続ストレージソリューションを追加する必要があります。
パフォーマンスメトリックをキャプチャします。メトリックを再度最適化、改善、およびキャプチャします。パフォーマンスの向上/低下を文書化しておくと、費やした金額とパフォーマンスの向上の結果を文書化したレポートを提出できます。これらは、適切に行われると、管理者をアーキテクトに、アーキテクトをプロジェクトマネージャーに、PMを上級管理職に変える可能性のあるサクセスストーリーのタイプです。
サーバー/アプリケーションのパフォーマンスの向上には、一般的にかなりのブードゥー教(または少なくとも試行錯誤)があります。
尋ねられる特定の質問の一般的なルールは、最初にメモリを増やすことができなくなるまでメモリを増やすことです[〜#〜]または[〜#〜]メモリを増やすとパフォーマンスが向上しなくなるまで。メモリが比較的安価であるため、単にメモリを最大化する方が簡単な場合があります。また、アプリケーションがディスクを大量に消費する場合は、高速ドライブまたは高性能コントローラーにアップグレードすると違いが生じる可能性があります。
ただし、質問の非常に一般的な性質から、パフォーマンスを改善するための他の試みはなかったと思います。私はハードウェアが安いことに同意します、それで問題でより多くのサーバーを投げることさえ達成するのに十分簡単です。しかし、他の手段、特にOSとデータベースの調整が行われていることも確認します。データベース、OS、またはアプリケーション構成を少し調整するだけで、パフォーマンスが大幅に向上する場合があります。
特定のOS、データベース、およびアプリケーションを使用してこのサイトを検索すると、金を獲得する可能性があります。
ページングしていますか? RAMを使用してディスクをキャッシュしますか?CPUは空きRAMにバインドされていますか?
ページングを行っている場合、および/またはRAMを使用してキャッシュできる場合は、RAMを追加します。RAMプレッシャーが発生していない場合は、何かそうしないと。
RAMは安いです。常に最初に、最も経済的な数量が得られるところまで上げる必要があります(たとえば、4GB DIMMは非常に高価なので、気にしないでください)。
次に、横方向のスケーリング(より多くのサーバー)を検討します。安価な消費者向けハードウェアと高価なサーバー部品を検討しますが、障害を予測し、フェイルオーバーの見積もりを総処理能力に組み込みます。
基本的に、 グーグルをする 。
RAMを追加することは魔法の修正だと考える人もいるようです。これは、RAMがボトルネックの場合にのみ役立ちます。
どのOSを使用しているか、どのくらいのRAMがサポートされているか、どのくらいのRAMがありますか?」という質問もあります。 32ビットOSの場合、さらに購入するとRAMは役に立ちません。Windowsを使用している場合、特定のSKUは特定の量のRAMではありません。 tは32ビットの制限に正確に関連しています。
より多くのRAM=より多くの仮想マシン。
だから私はもっとRAM=もっと多くのサーバー!!