web-dev-qa-db-ja.com

実行中Ruby on Rails App on Apache + Passenger == to much memory

パッセンジャー/ Apache 2.2を使用してサーバー上でredmine(RoRアプリ)を実行しています。乗客とRubyはメモリを使いすぎています。

Redmine/ruby​​を実行するためのよりメモリ効率の良い方法はありますか?

半ダースのredmineユーザーをサポートするだけで済みます。引き続きApacheを使用したいのですが、代わりに「nginx/lighttpdを使用する」以外のすべての提案を受け入れます。

(以下のデータは512MBのVPSからのものであるため、Rubyはredmineのためだけに128MB以上を使用しています)

user ....... %mem   ....... process
-----------------------------------
www-data ... 13.6   0:00.65 Ruby1.8
www-data ... 12.2   0:04.86 Ruby1.8

www-data ...  9.4   0:04.15 Apache2
www-data ...  9.0   0:13.94 Apache2
www-data ...  3.2   0:00.27 Apache2

root     ...  2.5   0:00.23 Apache2 
root     ...  1.9   0:01.19 Ruby1.8 

それで、私にとって乗客より良いものは何ですか?

考えてくれてありがとう!

4
Rich

Apache/passengerが生成するRailsプロセスの数を構成できます。サイズ(3つの同時リクエスト)の場合、2 Railsプロセス:

これらをApache構成で設定します。

PassengerMaxPoolSize 2
PassengerMaxInstancesPerApp 2

MaxPoolSizeは、最大で開始できるインスタンスの数を決定し、MaxInstancesPerAppは、各Webアプリが持つことができるインスタンスの数を決定します。

あなたは遊んでみたいかもしれません:

PassengerPoolIdleTime 

インスタンスがアンロードされる前にアイドル状態である必要がある秒数を指定します。デフォルトは300秒です。

私は問題なく3つのインスタンスでかなりトラフィックの多いWebアプリケーションを実行しています。

ああ、-Ruby EnterpriseEditionも役立ちます。

6
jcfischer

Rubyエンタープライズ? http://www.rubyenterpriseedition.com/ を使用していますか?

2
kbrower

Ruby Enterprise Edition (Passengerで推奨)を使用するか、Ruby 1.9、これも より高速にロード )を使用します。

1
Sasha Chedygov

いくつの同時リクエストをサポートする必要がありますか? nginxmongrels の小さなクラスターを使用します。このようにして、Rubyアプリケーションが使用するリソースの量を制限できます。

1
Dave Cheney

Redmine用のApacheプロキシパスを使用してmongrels/mongrel_clusterを実行することに成功しました。それほど多くのパフォーマンスは必要ありません(非常に大きな/遅いプロセスがたくさんあり、その上に外部プロセスを呼び出す傾向があります。ベンチマークの状況で試してみてください。それも死んでいました-セットアップは簡単です。

0
Perlchild