2013-02-11 43 views
6

tôi cần sự giúp đỡ của bạn!Unicorn không thể cấp phát bộ nhớ

Tôi đã triển khai ứng dụng Rails của mình trong Ubuntu 12.04, sử dụng Nginx, MySQL, Solr và Unicorn.

Mỗi dịch vụ nêu được bắt đầu, thay vì kỳ lân, mà nói như sau:

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 có 1.5Gb RAM và nó đủ cho kỳ lân:

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 

Tôi có unicorn_rails v4.5.0

Bắt đầu kỳ lân bằng lệnh sau:

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

Tôi đang làm gì sai ở đây?


Hmm, tôi nhớ, mà trước đây tôi đã sau lỗi lạ:

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'" 

Có lẽ nó là bằng cách nào đó liên quan đến vấn đề bộ nhớ ...

+1

Đôi khi bạn gặp sự cố tương tự. Giảm công nhân kỳ lân của tôi dường như giúp đỡ nhưng chưa giải quyết được. – ScotterC

+0

@AntonAL, bạn đang cố gắng bắt đầu bao nhiêu công nhân? – WattsInABox

+0

Không chắc chắn nếu điều này sẽ giúp đỡ, nhưng đây là một liên kết đến một trong những dự án của tôi mà bắt đầu kỳ lân trên Ubuntu 12.04 https://github.com/cyrusstoller/revtilt – Cyrus

Trả lời

2

Có vẻ như các lỗi đang xảy ra khi forking quy trình mới . Bạn có thể cần phải giảm bớt các công nhân trong tập tin config/unicorn.rb của bạn. Mỗi công nhân là một quá trình và mỗi quá trình tải môi trường ứng dụng vào RAM.