6

Rails 4 アプリケーションを Unicorn にデプロイしました。

トラフィックがなく、大量のメモリを消費しているように見えます。

253 MB の RAM を使用する 2 つのユニコーン ワーカーでアイドル状態で実行しているだけです。これは予想されることですか?

メモリを大量に消費する可能性のあるgemを使用しています、gemfile

gem 'rack-ssl'
gem 'jquery-rails'
gem 'activeadmin'      
gem 'american_date'
gem 'paperclip'
gem 'cancan'
gem 'pdfkit'
gem 'newrelic_rpm'
gem 'select2-rails'
gem 'whenever', :require => false
gem 'paymill'
gem 'pg'
gem 'queue_classic'
gem 'rails-observers'
gem 'actionpack-page_caching'
gem 'actionpack-action_caching'
gem 'sass-rails', :github => 'rails/sass-rails'
gem 'coffee-rails', :github => "rails/coffee-rails"
gem 'uglifier', '>= 1.3.0'
gem 'jquery-ui-rails'
gem 'foreman'
gem 'jquery-turbolinks'
gem 'turbolinks'
gem 'unicorn'
gem 'capistrano'
gem 'rvm-capistrano'

トップの場合

  CPU[|                                                   0.7%]     Tasks: 38, 10 thr; 1 running
  Mem[|||||||||||||||||||||||||                      253/995MB]     Load average: 0.27 0.17 0.14 
  Swp[                                                   0/0MB]     Uptime: 11:00:36

 PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
  844 deployer   20   0  467M  109M  2560 S  0.0 11.0  0:04.00 unicorn worker[1] -D -c /home/deployer/apps/application/shared/config/unicorn.rb -E production
  803 deployer   20   0  467M  109M  2560 S  0.0 11.0  0:00.00 unicorn worker[1] -D -c /home/deployer/apps/application/shared/config/unicorn.rb -E production
  800 deployer   20   0  467M  109M  2560 S  0.0 11.0  0:04.33 unicorn worker[1] -D -c /home/deployer/apps/application/shared/config/unicorn.rb -E production
  837 deployer   20   0  467M  109M  2560 S  0.0 11.0  0:03.48 unicorn worker[0] -D -c /home/deployer/apps/application/shared/config/unicorn.rb -E production
  802 deployer   20   0  467M  109M  2560 S  0.0 11.0  0:00.03 unicorn worker[0] -D -c /home/deployer/apps/application/shared/config/unicorn.rb -E production
  798 deployer   20   0  467M  109M  2560 S  0.0 11.0  0:03.85 unicorn worker[0] -D -c /home/deployer/apps/application/shared/config/unicorn.rb -E production
  801 deployer   20   0  270M  107M  5992 S  0.0 10.8  0:00.00 unicorn master -D -c /home/deployer/apps/application/shared/config/unic

ユニコーンの労働者はそれぞれ 3 回ずつ現れます。これは正しいです?

モニターログから

System   Status Load    CPU Memory                  Swap
server   Running    [0.02] [0.09]   25.4% [259492 kB]   0.0% [0 kB]
Process         Status  Uptime  CPU Total   Memory Total
unicorn         Running 10h 48m     0.0%    32.8% [334828 kB]
unicorn_worker_0    Running 10h 47m     0.0%    11.0% [112252 kB]
unicorn_worker_1    Running 10h 47m     0.0%    11.0% [112300 kB]
postgresql          Running 10h 48m     0.0%    1.7%  [18100 kB]
nginx           Running 10h 48m     0.0%    0.8%  [8592 kB]

これがメモリ消費量が多いかどうかを知るために、さらに情報が必要ですか?

4

1 に答える 1

6

これはまったく正常なことであり、各ユニコーン ワーカーは個別のプロセスです。

2 つのワーカーを要求するため、3 つのプロセスが表示されます。したがって、ワーカーを生成してユーザー シグナルに応答するマスター プロセスがあり、残りの 2 つは実際のワーカー プロセスです。

このように分離されたプロセスを持つと、より多くのメモリが消費されますが、実際には非常にクールです。これにより、グレースフルな再起動が可能になり、一部のワーカーはすぐにシャットダウンし、他のワーカーはリクエストの処理が完了するまで生き続けます。

また、グレースフル リスタート (USR2 シグナル) を実行すると、通常のメモリ消費量が短時間で 2 倍になることにも注意してください。これは、新しいマスターが開始されて新しいリクエストを受け入れ、独自のワーカーを生成し、すべてのワーカーがリクエストの処理を完了するまで以前のマスターがシャットダウンされないためです。

編集:各プロセスで使用されるRAMの量について答えるには、それも問題ありません。私の仕事用アプリは、プロセスごとに約 315MO を消費します。あなたのものとほぼ同じくらい多くの宝石を含むプレリリースサイドプロジェクトは、プロセスごとに約280MOです.

于 2013-09-23T09:11:51.993 に答える