3


1

初心者タイプの質問はお許しくださいが、レールとMySQLによって消費されるRAMは何によって決まりますか(私のサーバーはUbuntuです)。 サーバーに入ってくる要求はほとんどないので、2GBのうち1.5前後にホバリングしているように見えます。 MySQLには約100MBのデータが格納されています。 このサイトには約3500人の登録ユーザーがいて、トラフィックが多い場合、メモリーは約1.8 GBに達する傾向があります。 トラフィックが少ない場合や存在しない場合でも、それほど低下しません。

RoRの導入に関しては、RAM消費量の大きな要因は何ですか? 私はDBサイズを想定していたでしょうが、私のDBサイズは私のRAM消費量にはどこにも近くありません(しかし、多分これはそれについて考えるのは間違った方法ですか?)

誰かが私にこれについての良いリソースを指示することができますか、またはそれをここで私に説明することができますか?

ありがとう。

2 Answer


2


私は、Nginx Unicorn構成を使って最小のメモリフットプリントでRails 3.2.6アプリケーションを実行するための、Ubuntuサーバーの最も細い構成を分析しています。 そしてローカルのpostgresデータベースを使う。

Ubuntuのwhoopsieやapparmorのような多くのサービスを削除した後、基本的なプロセスのみを許可して、両側にワーカーをインスタンス化できます。nginxとunicornの合計は500MBです。

これは純粋にアプリのバニラ発売です。 単一データベース接続で。 これは、最初のユーザーをベースラインとして実行されたコマンドの結果です。

$ free -mtキャッシュされた空き共有バッファの合計使用量:3001 550 2450 0 16 178  -  / buffers / cache:355 2646スワップ:952 0 952合計:3954 550 3403

$ ps -ef | grep nginx root 1232 1 0 12:54 00:00:00 nginx:マスタープロセス/ usr / sbin / nginx www-data 1233 1232 0 12:54? 00:00:00 nginx:workerプロセスwww-data 1234 1232 0 12:54 00:00:00 nginx:workerプロセスwww-data 1235 1232 0 12:54? 00:00:00 nginx:workerプロセスwww-data 1236 1232 0 12:54 00:00:00 nginx:ワーカープロセスherminio 5292 1078 0 13:24 pts / 1 00:00:00 grep nginx

$ ps -ef | grepユニコーンヘルミニオ4863 1 0 13:01? 00:00:00 unicorn_rails master -c unicorn.rb -D -Eプロダクションherminio 4866 4863 2 13:01 00:00:34 unicorn_rails worker [0] -c unicorn.rb -D -E production herminio 5296 1078 0 13:24 pts / 1 00:00:00 grepユニコーン

$ ps -ef | grep postg postgres 935 1 0 12:54 00:00:00 /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -c config_file = / etc / postgresql / 9.1 / main / postgresql.conf postgres 940 935 0 12 54歳? 00:00:00 postgres:作家プロセスpostgres 941 935 0 12:54 00:00:00 postgres:wal作家プロセスpostgres 942 935 0 12:54 00:00:00 postgres:自動バキュームランチャープロセスpostgres 943 935 0 12:54 00:00:00 postgres:統計情報収集プロセスpostgres 5215 935 0 13:12 00:00:00 postgres:user_db pto_db_prod 127.0.0.1(47118)アイドルherminio 5300 1078 0 13:24 pts / 1 00:00:00 grep postg

NginxとUnicornからより多くのプロセスが生み出されるので、私のOSは私のアプリケーションが1接続で私のアプリケーションをホストするために92プロセスを使用していると判断できます。

プロセスごとのメモリ使用量を調べることも、アプリケーションのメモリ消費量を判断するのに役立ちます。

古いラップトップを使ってアプリのベースラインを設定していますが、メモリは3GBしかありません。 将来的には、このアプリを低スペックサーバーの分散環境でリリースすることを計画しています。したがって、私は自分のrailsアプリのすべてのフットプリントを特に知りたいのです。

その過程で私が学ぶことのいくつかは以下の通りです。

bundle install --without development test#本番環境でのみ使用され、それ以上ではないGemをアプリが使用およびロードすることを確認するため。

リクエストに必要なActiveRecordモデルのみをロードし、それ以上はロードしないようにしてください。


1


EngineYardは 良いブログ投稿を持ち、Railsのメモリ問題のいくつかの潜在的な原因について議論しています。 あなたはどのようにあなたのサイトを扱っていますか? (旅客? 雑種?