2016-09-07 1 views
0

WebアプリケーションのRuby on Railsは、ますますスループットが向上しています。 新しいRelicで、私はApdexの得点を得ました< 0.7nginxと2つの物理的なLinuxサーバを使ったWebアプリケーションのスケーラビリティ

私のアプリはNginxとTHINを使って私のDebianサーバー(例:ip pulicは123.235.23.16です)で動いています。コードとデータベースのmysqlはすべてこのサーバーにあります。

マイアプリには、THIN(0.0.0.0:3000,0.0.0.0:3001,0.0.0.0:3002)で作成された3つのアプリインスタンスがあります。 、hundleスループットへの最初のサーバーを助けるためにどのサーバー:私は別のDebianサーバ(IP pulicが123.235.23.17であるEX)を追加かどうかを知りたい

upstream myapp1 { 
     server 127.0.0.1:3000; 
     server 127.0.0.1:3001; 
     server 127.0.0.1:3002; 
    } 

server { 
     listen 80; 
     ... 
     location/{ 
      proxy_pass http://myapp1; 
     } 
     ... 
    } 

:そして、nginxのではHTTP設定、私は、負荷分散方式を使用しますnginx load balaancing serverとして設定する必要がありますか? 2つの異なるサーバーと異なるアプリケーションインスタンスでmysqlデータベースioを扱う方法は? mysqlのリモート?

答えて

1

応答時間が主に待ち行列時間によって引き起こされた場合、より多くの物理サーバまたはホストを追加することはApexのスコアに影響を与えますが、Railsの実動ワークロードではほとんど発生しません。

Railsアプリケーションが時間を費やす最も一般的な場所は、そのデータベースとのI/Oです。 N + 1爆発のクエリ数を確認し、NewRelicまたはDB自体の低速クエリログを確認して、インデックスの追加が役立つかどうかを確認します。パフォーマンスの低下が少数のページに限定されている場合は、キャッシュを使用して調査します。

ホームページも非常に遅いのが普通ですが、他のページはOKです。あなたのApdexスコアが、アプリケーション全体の遅さではなく、いくつかの悪いページの影響を第一に受けているかどうかを確認してください。

+0

あなたは、より多くの物理サーバーを追加することは良い解決策ではありません。私の場合でも4つのCPUが高いCPU使用率ですか?私はn + 1のクエリの問題はありません。 Memcachedは実行中です。 –

+0

CPU使用率が高いのは、時間プロファイリングをオンにできる場所で実行できるテストスイートがあることです。これは、アプリのどの部分がスピードアップされる必要があるかを示すことができます。遅いアプリのスピードを上げるために何ができるかには限界があります。また、すべてのページがApdexを下回っているのでしょうか? –

+0

あなたの答えをありがとう、私は私のアプリを監視するために新しい遺物を選択します。 rpmが168になると、すべてのページが減速します。しかし、3時には訪問者がいなくて、私のアプリは速いです。 –

関連する問題