2013-02-11 4 views
6

Мне нужна ваша помощь!Единорог не может выделить память

Я развернул приложение Rails в Ubuntu 12.04, используя Nginx, MySQL, Solr и Unicorn.

Каждый упомянутый сервис запускается, а единорог, который говорит следующее:

I, [2013-02-11T16:10:20.187989 #27547] INFO -- : Refreshing Gem list I, [2013-02-11T16:10:52.159198 #27547] INFO -- : unlinking existing socket=/var/www/staging/shared/unicorn.sock I, [2013-02-11T16:10:52.159488 #27547] INFO -- : listening on addr=/var/www/staging/shared/unicorn.sock fd=12 E, [2013-02-11T16:10:52.161513 #27547] ERROR -- : Cannot allocate memory - fork(2) (Errno::ENOMEM) /var/www/staging/shared/gems/ruby/1.9.1/gems/unicorn-4.5.0/lib/unicorn/http_server.rb:496:in fork' /var/www/staging/shared/gems/ruby/1.9.1/gems/unicorn-4.5.0/lib/unicorn/http_server.rb:496:in spawn_missing_workers' /var/www/staging/shared/gems/ruby/1.9.1/gems/unicorn-4.5.0/lib/unicorn/http_server.rb:142:in start' /var/www/staging/shared/gems/ruby/1.9.1/gems/unicorn-4.5.0/bin/unicorn_rails:209:in ' /var/www/staging/shared/gems/ruby/1.9.1/bin/unicorn_rails:23:in load' /var/www/staging/shared/gems/ruby/1.9.1/bin/unicorn_rails:23:in '

VDS имеет 1,5 Гб оперативной памяти, и это достаточно для Единорог:

cat /proc/meminfo 
MemTotal:  1585152 kB 
MemFree:   989580 kB 
Cached:   425296 kB 
Active:   348504 kB 
Inactive:   175356 kB 
Active(anon):  98488 kB 
Inactive(anon):  76 kB 
Active(file):  250016 kB 
Inactive(file): 175280 kB 
Unevictable:   0 kB 
Mlocked:    0 kB 
SwapTotal:  204800 kB 
SwapFree:   204800 kB 
Dirty:    12 kB 
Writeback:    0 kB 
AnonPages:   98564 kB 
Shmem:    3604 kB 
Slab:    71680 kB 
SReclaimable:  66144 kB 
SUnreclaim:   5536 kB 

У меня есть unicorn_rails v4.5.0

Единорог начинается с следующей команды:

bundle exec unicorn_rails -c /var/www/staging/current/config/unicorn.rb -E production -D

Что я здесь делаю неправильно?


Хм, я вспомнил, что раньше я была следующая странная ошибка:

failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.3-p327' -c 'cd /var/www/staging/current && bundle exec unicorn_rails -c /var/www/staging/current/config/unicorn.rb -E production -D'" 

Может быть, это как-то связано с проблемами памяти ...

+1

У меня такая же проблема изредка. Сокращение моих работников единорога, похоже, помогает, но не решило его. – ScotterC

+0

@AntonAL, сколько рабочих вы пытаетесь начать? – WattsInABox

+0

Не уверен, что это поможет, но вот ссылка на один из моих проектов, который запускает единорога на Ubuntu 12.04 https://github.com/cyrusstoller/revtilt – Cyrus

ответ

2

Кажется, что ошибка происходит при вызове новых процессов , Возможно, вам придется сократить число рабочих в файле config/unicorn.rb. Каждый рабочий - это процесс, и каждый процесс загружает среду приложения в ОЗУ.

Смежные вопросы