1

Rails 2.3.8アプリをホストし、slicehost(256M)で実行しています。私はバックエンドにまったく精通していません。基本的に、slicehostチュートリアルの手順に従ってApacheをインストールしました。メモリ使用量が非常に多いため、Apache confファイルを変更してMaxClient数を10に減らしました...しかし、スライスはまだスワップしています。

サイトを数回クリックしただけで得られるメモリ使用量は次のとおりです。

    top - 23:57:12 up 28 min,  2 users,  load average: 0.43, 0.54, 0.30
Tasks:  79 total,   1 running,  78 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 97.8%id,  0.1%wa,  0.0%hi,  0.0%si,  2.0%st
Mem:    262364k total,   258656k used,     3708k free,      260k buffers
Swap:   524280k total,   262772k used,   261508k free,     6328k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                       
 4004 web-app   20   0  178m  72m 1888 S    0 28.4   0:04.38 ruby1.8                                        
 4001 web-app   20   0  172m  61m 1932 S    0 24.2   0:02.72 ruby1.8                                        
 3941 root      20   0  164m  57m 1672 S    0 22.5   0:21.44 ruby                                           
 3990 web-app   20   0  209m  21m 1696 S    0  8.4   0:18.00 ruby1.8                                        
 3950 web-app   20   0  165m 7464 1548 S    0  2.8   0:20.40 ruby1.8                                        
 3684 mysql     20   0  224m 6504 2084 S    0  2.5   0:14.34 mysqld                                         
 3938 root      20   0 53632 3048 1036 S    1  1.2   0:01.50 starling                                       
 3839 root      20   0  243m 1456 1248 S    0  0.6   0:00.34 apache2                                        
 3897 www-data  20   0  243m 1452 1072 S    0  0.6   0:00.04 apache2                                        
 3894 www-data  20   0  243m 1368 1008 S    0  0.5   0:00.04 apache2                                        
 3895 www-data  20   0  243m 1220  960 S    0  0.5   0:00.02 apache2                                        
 3888 root      20   0 46520 1204 1100 S    0  0.5   0:02.29 ruby1.8                                        
 3866 root      20   0 17648 1184  896 S    0  0.5   0:00.08 bash                                           
 3896 www-data  20   0  243m 1180  952 S    0  0.4   0:00.00 apache2                                        
 3964 www-data  20   0  243m 1164  956 S    0  0.4   0:00.02 apache2                                        
 3892 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3948 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3962 www-data  20   0  243m 1132  956 S    0  0.4   0:00.02 apache2                                        
 3963 www-data  20   0  243m 1132  956 S    0  0.4   0:00.00 apache2                                        
 3965 www-data  20   0  243m 1080  888 S    0  0.4   0:00.00 apache2                                        
 3887 root      20   0 89008  960  796 S    0  0.4   0:00.00 ApplicationPool                                

次に何をすべきかわからない...より大きなスライスにアップグレードすることはできますが、今のところこのアプリのトラフィックはほとんどないので、構成またはコードに問題があると思いますか?

具体的な推奨事項は大歓迎です!ありがとう

4

2 に答える 2

1

要するに、256MBはRailsアプリケーションにはタイトです。Railsの実行方法については具体的に説明していませんが、PassengerモジュールでApacheを使用していると思います。Passengerモジュールは、実行し続けるインスタンスの数で構成できます。Webアプリアカウントで実行されている4つのrubyインスタンスがあります。私はそれらが乗客から来ていると思います。構成では、Passengerが開始するインスタンスの数を制限できます。これにより、メモリ要件が軽減されます。

一方、256MBのみで作業している場合、および1つのRailsアプリケーションのみをホストしている場合は、別のセットアップを使用する方がよい場合があります。以前に自分で使用したセットアップは、Nginx Webサーバーと、2つの雑種(192MBで、アプリケーションはテスト目的のみ)の雑種クラスターでした。基本的に、これは、いつでも2つ(そして2つだけ)のrailsリクエストを並行して処理できることを意味します。セットアップはApache+Passengerよりも少し難しいかもしれませんが、確かに難しくはありません。256MBを使用する場合は、これがよりパフォーマンスの高いソリューションだと思います。

于 2010-12-09T00:30:16.623 に答える
1

Railsアプリが利用可能なすべてのメモリを使用しているようです。私は3つのことをお勧めします:

  1. サーバーのメモリをアップグレードします。Railsアプリの場合、256MBはそれほど多くありません。512に移動すると、問題が軽減される場合があります。それで解決した場合は、追加コスト($ 18 /月)とパフォーマンスの問題を追跡するのにかかる時間とを考慮する必要があります。

  2. アプリケーションのプロファイルを作成して、どのリクエストが最も多くのメモリを消費しているかを把握します。これは、多くのレコードを見つけ、関連するテーブルも含まれている可能性が高い場所です。考えられる問題領域を絞り込むのに役立つツールがいくつかあります。私はoinkを使用しましたが、間違いなく他にもあります。問題がどこにあるかを理解したら、メモリ使用量を減らすためにいくつかの調整を行うことができます。

  3. ApacheでPassengerを使用していると仮定すると、Passenger構成ファイル内の同時リクエストの数を減らすことができます。これは、 https://serverfault.com/questions/15350/running-ruby-on-rails-app-on-apache-passenger-to-much-memoryに役立つ可能性があります

于 2010-12-09T00:17:05.297 に答える