macbook airにvagrantとvirtual boxでvmを立てて、CentOSを入れてRailsのプロジェクトを動かしているのですが、割りと初期からよくこんなエラーが出てました。
/home/hoge/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/spring-1.1.2/lib/spring/application.rb:153:in `fork': Cannot allocate memory - fork(2) (Errno::ENOMEM)
メモリー系のエラーな様です。
調べてみたら対応策として、2つのことが挙げられていました。
Swap領域の確保
$ sudo swapon -s # スワップの現状確認
$ df # ディスク使用状況確認
$ sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k # スワップ用のファイル作成
$ sudo mkswap /swapfile # 作成したファイルをスワップとして初期化
$ sudo swapon /swapfile # スワップを有効化
$ swapon -s # 確認
再起動時でもSwap領域を使えるようにするには
$ sudo sh -c "echo '/swapfile swap swap defaults 0 0' >> /etc/fstab"
こうすると、確かに動きます。
でもわたしの場合は、しばらくするとこれでも動かなくなりました。
swapのサイズも足りないのか??
メモリーサイズを増やす
そもそもメモリーがこれ以上割り当てられないと怒られているので、メモリーを増やして上げればいいんじゃないかということです。
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.provider :virtualbox do |vb|
・
・
vb.customize ["modifyvm", :id, "--memory", 1024]
end
# :
# other settings
# :
end
とりあえず1GB割り当てました。
これでなんとか動きました。
初期設定はOS推奨の最小値になっているらしいので、限界もくるのもわからなくもないかな。
あとは
$ vagrant reload
で反映されるはずです。