3

ubuntu VPS(1GB RAM)でRailsアプリ(mongodbとmemcachedを備えたPassengerとnginx)アプリを実行しています-数日後、nginxを起動した後、Rubyプロセスがボックスのすべてのメモリをゆっくりと占有していることがわかりますサーバーにリクエストはありませんが。new_relic は以下を示します ここに画像の説明を入力

トップ 出力

top - 12:02:23 up  2:47,  1 user,  load average: 0.03, 0.02, 0.00
Tasks:  16 total,   1 running,  15 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.0%sy,  0.0%ni, 99.9%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   1048576k total,  1048576k used,        0k free,        0k buffers
Swap:        0k total,        0k used,        0k free,        0k cached

9993 mongodb   18   0  128m  29m  21m S    0  2.9   0:17.06 mongod                                                                                      
1135 nobody    18   0 71664  18m  856 S    0  1.8   0:00.55 memcached                              
14310 passenge  15   0  500m 434m 4660 S    0 42.5   0:13.59 ruby
15496 passenge  15   0  425m 360m 4648 S    0 35.3   0:13.06 ruby   

メモリをリークしているコードがあると思います-または、パッセンジャーでコストのかかるルビープロセスがしきい値に達するたびに、何らかの方法で強制終了する必要があります。これらの両方の問題について、いくつかの考えを共有してください。

4

1 に答える 1

0

あまり情報がないので答えにくいので、かなり一般的に答えます。経時的なメモリ使用量を示すグラフ、または応答時間の低下を示すグラフが役立ちます。

とにかく、私は同様のセットアップを持っています (Rails/Passenger/Nginx/MongoDB/VPS-1GB)。

  • 最初に、ログをチェックしてリクエストがないことを確認し、リクエストがないという仮定を確認します (そして、Nginx でロギングが十分にオンになっていることを確認します)。

  • New Relic を無効にしてみてください (これは時間の経過とともにサーバーにハートビートを送信するため)、他の監視ソフトウェア (Nagios など) も確認してください。

  • 無料の負荷テスト アプリ (例: http://loadimpact.com ) を試して、積極的に負荷テストを行っているときのメモリ/GC とプロセッサのグラフを確認してください。メモリ使用量が正常な量を超えて徐々に増加している場合は、どこかでメモリ リークが発生している可能性があります。

もしそうなら、それは本当に変数を排除するだけの問題です - 私はRailsをNginx上で一時停止しますが、フロントエンドなしでRailsを実行するか、パッセンジャーをオフにしてNginxのすべての静的アセットを試してみることができます原因を見つけます。

お役に立てれば。

于 2013-08-19T08:04:12.890 に答える