web-dev-qa-db-ja.com

Ruby on Railsアプリケーション用にサーバーをスケールアップする最初のステップ

8GB RAMおよびUbuntuを搭載したデュアルコアAMDAthlon4450eサーバーでRoRWebアプリケーションを実行しています。

正常に動作しており、1分あたり最大320の動的リクエストが急増し、より大きなビデオファイルの提供を含むすべてのアセットも処理しています。

ホスト上でApachew/PassengerとMySQLを実行しています。

パフォーマンスは依然としてかなり一貫していますが、負荷が高い期間に負荷平均が1を超え始め、CPU負荷が40または50%のマークに向かって上昇しているのがわかります。

追加のコンピューターと8GBのクアッドコアシステムを購入する余裕がありますRAM私の予算に合います。

現在のボックスをデータベースサーバーに変えて、その前にWebサーバーとしてクアッドコアを配置する必要がありますか?

クアッドコアをデータベースサーバーとWebサーバーの両方として実行し、既存のデュアルコアを別のWebサーバーとして実行したほうがよいでしょうか。

考慮すべき他のサーバーレイアウトはありますか?

負荷がかかっているサーバーのスナップショットは次のとおりです。

サーバー負荷http://img.skitch.com/20100208-jhk11btcb43yg4mhd75ecinqqr.png

ありがとう、

-ティム

4
Tim Harding

それは壊れていません、それを直さないでください。

一般的な次のステップのアドバイスとして、静的ファイルをnginxまたはcdnに分割し、mysqlクエリを分析して、インデックスやわずかな調整が役立つ場所を確認することができます。

Railsを実行しているデュアルコアマシンを使用すると、ユーザーに影響を与えることなく、平均2〜3の負荷を簡単に維持できるはずです。

1
cagenut

まず、CPU負荷の原因(db、またはApache/RoRアプリケーション)を見つける必要があります。

クアッドコアマシンをdbサーバーとして配置し、デュアルコアをWebサーバーとして残すことをお勧めします。 Webサーバーでさらに問題が発生した場合は、負荷分散を使用していつでも別の問題を追加できます。

ただし、ここでも、最初に現在の負荷を調べて確認します。

0
Sunny

アップグレードは非常に重要なので、新しいコンピューターにすべてをセットアップし、古いコンピューターをテストサーバーとして使用します。

新しいサーバーよりも大きくなった場合は、古いサーバーでRoRアプリをセットアップし、nginxを使用して負荷分散を行うことができます。 Mysqlレプリケーションも、少なくともバックアップ値についてはオプションになる可能性があります。

0
Espennilsen