1

私のアプリケーションは 2.2 GB のメモリを使用しているため、ディスクにスワップしています。アプリケーションの何が原因でメモリを大量に消費するのかわかりません。

これは、2 GB の RAM を搭載した RHEL5 VM です。

Rails はバージョン 3.1.3 です。

Phusion Passenger バージョン 3.0.11 を使用する nginx v1.0.10 の Web サーバー。

「ruby」プロセスは、メモリ フットプリントに関して完全にオフフックのように見えます。

アプリケーションは、比較的単純な製品カタログです。メモリが不足すると、サーバーは 1 日に約 2 回クラッシュします。memcached v1.4.4 も使用しています。

Rails キャッシングは、最終的にそれ以上のメモリを確立できなくなったときにクラッシュを引き起こしています。

アプリケーションのフットプリントがこれほど大きい理由を判断するために、どのような手順を実行すればよいかわかりません。

それは可能性が:

1) Some gems being loaded into memory?
2) A faulty or insufficient Passenger setup in my nginx.conf file?
3) Something else?

どなたでもご協力いただければ幸いです。夜は2時間ごとにチェックしなければなりません。楽しくない!

アップデート:

乗客の構成は次のとおりです。

server {
  listen 80;
  client_max_body_size 4M;
  server_name www.myapp.net myapp.net *.myapp.net;
  root /usr/code/mcp5/public;   # <--- be sure to point to 'public'!
  passenger_enabled on;
  passenger_min_instances             5;
  rails_env                           production;
  rails_framework_spawner_idle_time   0;
  rails_app_spawner_idle_time         0;
}

また、ロギング ユーティリティで、このことが 20 以上の ruby​​ proc に急速にスピンアップしていることにも気付きました。

4

2 に答える 2

1

乗客の構成はどのように見えますか? 使用可能なリソースに対してスレッドが多すぎる可能性があります。

更新していただきありがとうございます。

私たちのサーバーにはあなたのサーバーよりもはるかに多くのリソースがありますが、それでも次のディレクティブを使用します。

PassengerMaxPoolSize

最初は 10 に設定して、負荷テストを実行してみてください。これにより、少なくともアプリがサーバーを強制終了するのを防ぐことができます。次に、ボトルネックがどこにあるかを特定するためにさらに時間を費やします。パフォーマンスの監視にはNewrelicを使用しています。

于 2012-04-18T02:41:09.170 に答える
1

NewRelic を使用できない場合、またはプロ プランを購入するお金がない場合は、パッセンジャーの問題を特定するために以下を試すことができます。

sudo /usr/local/bin/passenger-status

どのプロセスがどのサイトに属しているかを表示する - 1 台のマシンから複数のサイトにサービスを提供している場合に非常に便利です。

sudo /usr/local/bin/passenger-memory-stats

サービス提供に関連するすべてのプロセス (Apache + パッセンジャー + Ruby) の詳細なメモリ情報を表示します。

muninと同様に、従来の監視をセットアップすることもできます。muninで乗客を監視するためのいくつかのハウツーがあります

于 2012-04-18T10:26:37.097 に答える