【问题标题】:Unicorn cannot allocate memory独角兽无法分配内存
【发布时间】:2013-01-26 17:38:38
【问题描述】:

我需要你的帮助!

我使用 Nginx、MySQL、Solr 和 Unicorn 在 Ubuntu 12.04 中部署了我的 Rails 应用程序。

每个提到的服务都会启动,而不是独角兽,它说如下:

我,[2013-02-11T16:10:20.187989 #27547] INFO -- : 刷新宝石列表 我,[2013-02-11T16:10:52.159198 #27547] INFO -- : 取消现有的链接 socket=/var/www/staging/shared/unicorn.sock 我, [2013-02-11T16:10:52.159488 #27547] 信息 -- : 监听 addr=/var/www/staging/shared/unicorn.sock fd=12 E, [2013-02-11T16:10:52.161513 #27547] 错误 -- : 无法分配内存 - 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.5Gb 的 RAM,对于独角兽来说已经足够了:

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

Unicorn 通过以下命令启动:

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

也许它与记忆问题有某种关系......

【问题讨论】:

  • 偶尔遇到同样的问题。减少我的独角兽工人似乎有所帮助,但并没有解决它。
  • @AntonAL,你要启动多少个工人?
  • 不确定这是否会有所帮助,但这是我在 Ubuntu 12.04 上启动独角兽的项目之一的链接github.com/cyrusstoller/revtilt

标签: ruby-on-rails unicorn


【解决方案1】:

分叉新进程时似乎正在发生错误。您可能需要减少 config/unicorn.rb 文件中的工作人员。每个worker就是一个进程,每个进程将应用环境加载到RAM中。

【讨论】:

    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 2023-03-09
    • 2012-02-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多